una - ¿Forward declaraciones de función en un Bash o un script de Shell?
variables en bash (2)
Cuando mis scripts bash crecen demasiado, uso un mecanismo de inclusión:
Archivo allMyFunctions
:
foo() {
}
bar() {
}
baz() {
}
Archivo main
:
#!/bin/bash
. allMyfunctions
foo
bar
baz
¿Existe tal cosa en bash
o al menos algo similar (trabajo alternativo) como declaraciones hacia adelante, bien conocido en C / C ++, por ejemplo?
¿O hay tal cosa porque, por ejemplo, siempre se ejecuta en un pase (línea tras línea)?
Si no hay declaraciones directas, ¿qué debo hacer para que mi script sea más fácil de leer? Es bastante largo y estas definiciones de funciones al principio, mezcladas con variables globales, hacen que mi script se vea feo y difícil de leer / comprender). Estoy pidiendo aprender algunas buenas prácticas / conocidas para tales casos.
Por ejemplo:
# something like forward declaration
function func
# execution of the function
func
# definition of func
function func
{
echo 123
}
Gran pregunta Utilizo un patrón como este para la mayoría de mis scripts:
#!/bin/bash
main() {
foo
bar
baz
}
foo() {
}
bar() {
}
baz() {
}
main "$@"
Puede leer el código de arriba a abajo, pero en realidad no comienza a ejecutarse hasta la última línea. Al pasar "$@"
a main (), puede acceder a los argumentos de la línea de comandos $1
, $2
y demás, tal como lo haría normalmente.