J'essaie de créer une méthode de fonction dans un script bash qui exécute une commande qui est fournie à la méthode par les paramètres.
Ce qui signifie quelque chose comme ça:
special_execute()
{
# Some code
# Here's the point where the command gets executed
$@
# More code
}
special_execute echo "abc"
Je l' ai déjà j'essayé $@
, "$@"
, $*
, "$*"
comment pourrais - je faire cela?
$@
travaille pour moi ..special() { $@; }
...special echo "foo"
donnefoo
perl -MTime::HiRes=sleep -le 'for(1..100) { print; sleep 0.05; }'
ettar -cvf "backups/test.tar" -P "backups/uncompressed_server_backup_(DO NOT TOUCH!)/server/"
"$@"
, alors vous aurez plus de succès :)Réponses:
Je pense que c'est juste un problème de citation lorsque vous passez les arguments dans la fonction.
Essayez de l'appeler ainsi:
Si vous ne voulez pas les guillemets simples,
abc
modifiez-les comme ceci:Débogage
Vous pouvez envelopper les internes de la fonction afin qu'elle résonne avec plus de verbosité.
Ensuite, lorsque vous exécutez des commandes via la fonction,
special_execute
vous pouvez voir ce qui se passe.exemple ps:
exemple perl:
Argument d'analyse
$1
Vous pouvez faire quelque chose comme ça pour analyser tous les arguments passés en tant que
$1
.Exemple
avec le débogage activé:
avec débogage -
-123
:avec débogage -
-456
:la source
alias
.