Estou tentando criar um método de função em um script bash que executa um comando que é fornecido ao método pelos parâmetros.
Significado algo como isto:
special_execute()
{
# Some code
# Here's the point where the command gets executed
$@
# More code
}
special_execute echo "abc"
Eu já tentei I $@
, "$@"
, $*
, "$*"
como eu poderia fazer isso?
$@
funciona para mim ..special() { $@; }
...special echo "foo"
dáfoo
perl -MTime::HiRes=sleep -le 'for(1..100) { print; sleep 0.05; }'
etar -cvf "backups/test.tar" -P "backups/uncompressed_server_backup_(DO NOT TOUCH!)/server/"
"$@"
, então você terá mais sucesso :)Respostas:
Eu acho que é apenas uma questão de citar quando você está passando os argumentos para a função.
Tente chamar assim:
Se você não quiser aspas simples
abc
, altere as aspas da seguinte maneira:Depuração
Você pode agrupar as partes internas da função para que ela ecoe com mais verbosidade.
Então, quando você executa comandos através da função,
special_execute
pode ver o que está acontecendo.exemplo ps:
exemplo perl:
Argumento de análise
$1
Você poderia fazer algo assim para analisar quaisquer argumentos passados como
$1
.Exemplo
com a depuração ativada:
com a depuração -
-123
:com a depuração -
-456
:fonte
alias
.