将一个shell脚本的所有参数传递给另一个

时间:2013-08-28 15:41:33

标签: shell unix

我有一个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一样。

由于 扎比

1 个答案:

答案 0 :(得分:11)

你需要说:

Test2.sh "$@"

请参阅Special Parameters

  

@

     

从一个开始扩展到位置参数。当。。。的时候   扩展发生在双引号内,每个参数扩展为a   单词。也就是说,"$@"相当于"$1" "$2" ...。如果   双语扩张发生在一个词内,扩展了   第一个参数与原始的开头部分连接在一起   单词,并将最后一个参数的扩展与最后一个参数连接起来   原始单词的一部分。没有位置参数时   "$@"$@扩展为空(即删除它们)。

手册说:

  

"$*"相当于"$1c$2c...",其中c是第一个   IFS变量值的字符。

解释了你正在观察的结果。