Я в основном хочу написать мне скрипт bash, где я бы сгенерировал пару больших файлов, используя heredoc ; и затем выполните некоторые команды, используя эти файлы.
Понятно, что (очевидно) файлы heredoc должны быть сгенерированы до запуска команд - однако меня раздражает то, что я должен написать код операторов 'heredoc', за до Я пишу код команды.
Поэтому я решил написать операторы heredoc в функции, но здесь все та же проблема: Глава 24. Функции говорит:
Определение функции должно предшествовать первому ее вызову. Не существует метода «объявления» функции, как, например, в C.
Действительно, это так:
$ cat > test.sh <<EOF
testo
function testo {
echo "a"
}
EOF
$ bash test.sh
test.sh: line 1: testo: command not found
Тогда я подумал, что, может быть, я смогу разместить несколько ярлыков и прыгать с GOTO
, как в (псевдокоде):
$ cat > test.sh <<EOF
goto :FUNCLABEL
:MAIN
testo
goto :EXIT
:FUNCLABEL
function testo {
echo "a"
}
goto MAIN
:EXIT
... но оказывается BASH goto тоже не существует.
Моя единственная цель заключается в том, чтобы - сначала я хочу написать «ядро» файла сценария, которое состоит из пяти-шести команд; и только затем записывают операторы heredoc в файл сценария (который может содержать сотни строк); сначала наличие heredocs действительно затрудняет мне чтение кода. Есть ли способ добиться этого?