Переслать декларации в bash?
Есть ли такая вещь в bash
или, по крайней мере, что-то подобное (work-around), например, форвардные объявления (хорошо известные в C/C++
, например)?
Или там такая вещь, потому что она всегда выполнялась за один проход?
Если нет форвардных объявлений, что мне делать, чтобы сделать мой script более простой для чтения (он довольно длинный, и эти определения функций в начале, смешанные с глобальными переменными, делают мой script выглядит очень, очень уродливо и трудно читать/понимать)? Я прошу некоторых известных/лучших практик для таких случаев.
Например:
# something like forward declaration
function func
# execution of the function
func
# definition of func
function func
{
echo 123
}
Ответы
Ответ 1
Отличный вопрос. Я использую такой шаблон для большинства моих скриптов:
#!/bin/bash
main() {
foo
bar
baz
}
foo() {
}
bar() {
}
baz() {
}
main "[email protected]"
Вы можете прочитать код сверху вниз, но он фактически не запускается до последней строки. Передавая "[email protected]"
в main(), вы можете получить доступ к аргументам командной строки $1
, $2
и другим, как обычно.
Ответ 2
Когда мои скрипты bash растут слишком сильно, я использую механизм include:
Файл allMyFunctions
:
foo() {
}
bar() {
}
baz() {
}
Файл main
:
#!/bin/bash
. allMyfunctions
foo
bar
baz