我有一个shell脚本,我传递的参数很少。
Test1.sh -a 1 -b 2 -c "One Two Three"
在Test1.sh内部我以下面的方式调用另一个shell脚本。
Test2.sh $*
我想将所有参数传递给Test2,它们传递给Test1并且格式相同(带双引号等)。
但是传递给Test2的参数是
Test2.sh -a 1 -b 2 -c One Two Three
哪个对我不起作用。有没有办法解决它,以便我可以传递参数,就像我传递给Test1一样。
由于 扎比
答案 0 :(得分:11)
你需要说:
Test2.sh "$@"
@
从一个开始扩展到位置参数。当。。。的时候 扩展发生在双引号内,每个参数扩展为a 单词。也就是说,
"$@"
相当于"$1" "$2" ...
。如果 双语扩张发生在一个词内,扩展了 第一个参数与原始的开头部分连接在一起 单词,并将最后一个参数的扩展与最后一个参数连接起来 原始单词的一部分。没有位置参数时"$@"
和$@
扩展为空(即删除它们)。
手册说:
"$*"
相当于"$1c$2c..."
,其中c
是第一个IFS
变量值的字符。
解释了你正在观察的结果。