Short: В оболочке функции должны быть определены перед их вызовом.Итак, переместите вашу call_ant
функцию оболочки
call_ant() {
ant -q
}
в верхнюю часть скрипта.
длиннее, и пример
Пусть, скажем, естьродительский сценарий с именем par
с содержимым
for i in 1 2 3
do
echo "par: calling sub with $i"
./sub $i
done
, поэтому есть дочерний сценарий с именем sub
с содержимым
myecho() { echo "sub: got this: $@"; }
myecho "$1"
, на котором выполняется bash par
, печатается:
par: calling sub with 1
sub: got this: 1
par: calling sub with 2
sub: got this: 2
par: calling sub with 3
sub: got this: 3
но если вы измените sub
на:
myecho "$1"
myecho() { echo "got this: $@"; }
, вы получите:
par: calling sub with 1
./sub: line 2: myecho: command not found
par: calling sub with 2
./sub: line 2: myecho: command not found
par: calling sub with 3
./sub: line 2: myecho: command not found
и, конечно, когда вы закомментируете myecho
в сабе
#myecho "$1"
myecho() { echo "sub: got this: $@"; }
будет печатать без ошибок
par: calling sub with 1
par: calling sub with 2
par: calling sub with 3
Ps:
В таких случаях обычно помогает запустить скрипт с bash -x script
, чтобы увидетькак это выполняется.