Ich versuche, eine Funktionsmethode in einem Bash-Skript zu erstellen, die einen Befehl ausführt, der von den Parametern an die Methode übergeben wird.
Bedeutet so etwas:
special_execute()
{
# Some code
# Here's the point where the command gets executed
$@
# More code
}
special_execute echo "abc"
Ich habe bereits versucht , ich $@
, "$@"
, $*
, "$*"
wie könnte ich das tun?
$@
arbeitet für mich ...special() { $@; }
...special echo "foo"
gibtfoo
perl -MTime::HiRes=sleep -le 'for(1..100) { print; sleep 0.05; }'
undtar -cvf "backups/test.tar" -P "backups/uncompressed_server_backup_(DO NOT TOUCH!)/server/"
"$@"
, dann werden Sie mehr Erfolg haben :)Antworten:
Ich denke, es ist nur ein Anführungszeichen, wenn Sie die Argumente in die Funktion übergeben.
Versuchen Sie es so zu nennen:
Wenn Sie die einfachen Anführungszeichen nicht verwenden möchten,
abc
ändern Sie das Anführungszeichen wie folgt:Debuggen
Sie können die Interna der Funktion so umschließen, dass sie ausführlicher wiedergegeben wird.
Wenn Sie dann Befehle über die Funktion ausführen, können
special_execute
Sie sehen, was los ist.ps Beispiel:
Perl Beispiel:
Parsing-Argument
$1
Sie können so etwas tun, um Argumente zu analysieren, die als übergeben wurden
$1
.Beispiel
mit aktiviertem Debugging:
beim Debuggen aus -
-123
:beim Debuggen aus -
-456
:quelle
alias
.