Как я передаю все аргументы одного сценария оболочки в другого? Я попробовал $*, но поскольку я ожидал, это не работает при заключении в кавычки аргументов.
Пример:
$ cat script1.sh
#! /bin/sh
./script2.sh $*
$ cat script2.sh
#! /bin/sh
echo $1
echo $2
echo $3
$ script1.sh apple "pear orange" banana
apple
pear
orange
Я хочу, чтобы это распечатало:
apple
pear orange
banana
Используйте "$@"
вместо $*
для сохранения котировок:
./script2.sh "$@"
Дополнительная информация:
http://tldp.org/LDP/abs/html/internalvariables.html
$*
. Все параметры позиции, рассматриваемые как одно словоПримечание: "$*" должны быть процитированы.
$@
. То же самое, что и $*, но каждый параметр - это кавычки, то есть параметры передаются в целости и сохранности, без интерпретации и расширения. Это означает, среди прочего, что каждый параметр в аргументе список рассматривается как отдельное слово.Примечание: Конечно, "$@" должно быть процитировано.