В моем bash-скрипте я хотел бы проанализировать ноль, один или два параметра (скрипт может их распознать), а затем переслать оставшиеся параметры команде, вызванной в скрипте. Как я могу это сделать?
bash
command-line
Лукаш Лью
источник
источник
$@
по сути, каждый элемент массива обрабатывается как строка в кавычках - они передаются без возможности расширения. Это также гарантирует, что каждый рассматривается как отдельное слово. Это объяснение вместе с тестовым сценарием, демонстрирующим разницу, находится здесь: tldp.org/LDP/abs/html/internalvariables.html#APPREFbash использует команду shift :
например, shifttest.sh:
shifttest.sh 1 2 3 производит
источник
$1
без кавычек"$1"
, то оболочка выполнит разбиение слов, например,foo bar
будет переадресовано какfoo
иbar
отдельно.Bash поддерживает параметры поднабора (см. Подмножества и подстроки ), поэтому вы можете выбрать, какие параметры обрабатывать / передавать следующим образом.
откройте новый файл и отредактируйте его: vim
r.sh
:запустить его:
результат:
источник