Я пытаюсь создать метод функции в скрипте bash, который выполняет команду, которая передается методу в параметрах.
Имея в виду что-то вроде этого:
special_execute()
{
# Some code
# Here's the point where the command gets executed
$@
# More code
}
special_execute echo "abc"
Я уже пробовал я $@
, "$@"
, $*
, "$*"
как я мог это сделать?
$@
работает для меня ..special() { $@; }
...special echo "foo"
даетfoo
perl -MTime::HiRes=sleep -le 'for(1..100) { print; sleep 0.05; }'
иtar -cvf "backups/test.tar" -P "backups/uncompressed_server_backup_(DO NOT TOUCH!)/server/"
"$@"
, тогда у вас будет больше успеха :)Ответы:
Я думаю, что это просто проблема цитирования, когда вы передаете аргументы в функцию.
Попробуйте назвать это так:
Если вы не хотите использовать одинарные кавычки,
abc
измените кавычки следующим образом:Отладка
Вы можете обернуть внутреннюю часть функции так, чтобы она отражалась в большей детализации.
Затем, когда вы запускаете команды через функцию,
special_execute
вы можете видеть, что происходит.PS пример:
пример Perl:
Разбор аргумента
$1
Вы можете сделать что-то вроде этого, чтобы проанализировать любые аргументы, переданные как
$1
.пример
с включенной отладкой:
с отладкой -
-123
:с отладкой -
-456
:источник
alias
.