У меня есть функции в моем файле bash:
function fn1 {
echo "fn1 commands"
}
function fn2 {
echo "fn2 commands"
}
function fn3 {
echo "fn3 commands"
}
, и у меня есть массив функций - функция bash execute в массиве:
funcs_to_test=( fn1 fn2 fn3 )
for testP in "${funcs_to_test[@]}"
do
$testP
done
Еще один что мне нужно сделать, это выполнить функцию или функции с помощью ввода из командной строки:
bash app.sh -f fn1 fn2
Поэтому я читаю ввод следующим образом:
while [[ "$#" -gt 0 ]]; do case $1 in
-f|--fn) fns="$2"; shift;;
*) echo "Unknown parameter passed: $1"; exit 1;;
esac; shift; done
, и я хочу установить значение от fns
до funcs_to_test
, если не пусто:
if [ -z "$fns" ] then
funcs_to_test=($fns)
fi
, но я получаю сообщение об ошибке:
syntax error near unexpected token `fi'
Как заставить выполнять эти функции из командной строки?
#!/bin/bash
function fn1 {
echo "fn1 commands"
}
function fn2 {
echo "fn2 commands"
}
function fn3 {
echo "fn3 commands"
}
while [[ "$#" -gt 0 ]]; do case $1 in
-f|--fsn) fns="$2"; shift;;
*) echo "Unknown parameter passed: $1"; exit 1;;
esac; shift; done
funcs_to_test=( fn1 fn2 fn3 )
if [ -z "$fns" ] then
funcs_to_test=($fns) <--- here the problem. I do it wrong?
fi
for testP in "${funcs_to_test[@]}"
do
$testP
done