我有一个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.
这解释了你正在观察的结果.