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

use*_*057 5 unix shell

我有一个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的方式相同.

谢谢Zabi

dev*_*ull 11

你需要说:

Test2.sh "$@"
Run Code Online (Sandbox Code Playgroud)

请参阅特殊参数:

@

从1开始扩展到位置参数.当扩展发生在双引号内时,每个参数都会扩展为单独的单词.也就是说,"$@"相当于"$1" "$2" ....如果双引号扩展发生在一个单词中,则第一个参数的扩展与原始单词的开头部分连接,最后一个参数的扩展与原始单词的最后一部分连接.当没有位置参数时, "$@"$@扩展为空(即,它们被移除).

手册说:

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

这解释了你正在观察的结果.