6

我有一个 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 一样传递参数。

谢谢扎比

4

1 回答 1

12

你需要说:

Test2.sh "$@"

参考特殊参数

@

扩展到位置参数,从一个开始。当扩展出现在双引号内时,每个参数都扩展为一个单独的单词。即,"$@"等价于"$1" "$2" ...。如果双引号扩展出现在一个单词中,则第一个参数的扩展与原始单词的开头部分连接,最后一个参数的扩展与原始单词的最后部分连接。当没有位置参数时, "$@"扩展$@为空(即,它们被删除)。

手册说:

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

这解释了您正在观察的结果。

于 2013-08-28T15:46:48.390 回答