$@
pode conter qualquer coisa, até mesmo coisas que tornam sua função de repente sintaticamente inválida. Cite isso em seu lugar. Aqui está uma versão menos quebrável do script:
if [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
action() {
printf '%s\n' "$1"
shift
"$@"
}
success() { printf Success ; }
failure() { printf Failed ; }
fi
Se você estiver usando bash
ou similar, poderá usar o seguinte como a função action
:
action() {
printf '%s\n' "$1"
"${@:2}"
}
Se for importante que ele se divida no IFS como o script original (provavelmente não é), desmarque $@
.
Também é possível que você esteja executando isso em um shell não bash. function
é uma base, use func()
.