如何将一个shell脚本的所有参数传递给另一个?我已经尝试了$ *,但正如我所料,如果引用了参数,那就行不通了。
示例:
$ 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
答案 0 :(得分:32)
使用"$@"
代替$*
来保留引号:
./script2.sh "$@"
更多信息:
http://tldp.org/LDP/abs/html/internalvariables.html
$ *
所有位置参数,看作单个单词注意:必须引用“$ *”。
$ @
与$ *相同,但每个参数都是带引号的字符串,即 参数完整传递,无需解释或扩展。 除其他外,这意味着参数中的每个参数 列表被视为一个单独的词。注意:当然,应该引用“$ @”。