向 shell 脚本传参数怎么带上引号

2016-11-18 22:57:21 +08:00
 JohnLou

bash 脚本 learn.sh 里有一行

/test.sh arg1 arg2 "arg3 $@"

test.sh 需要 3 个参数,像上面那样一直提示参数数量不对,用了转义双引号也不行。

3142 次点击
所在节点    问与答
8 条回复
ik
2016-11-18 23:05:13 +08:00
"\"\""
不知道一样行不行
JohnLou
2016-11-18 23:06:46 +08:00
@ik 不可以。。
vghdjgh
2016-11-18 23:08:55 +08:00
双引号外面套单引号?
ik
2016-11-18 23:12:08 +08:00
@JohnLou 好吧,脚本用的不多,不太清楚,
几个参数使用分隔符合并成一个参数,传递参数后再分割… 我只能想到这个办法了。仅做参考
JohnLou
2016-11-18 23:14:04 +08:00
@ik tesh.sh 不能动,我这里是二进制的,只是举个例子。
jkeylu
2016-11-18 23:22:46 +08:00
把 $@ 改为 $*
"$*" 双引号包裹后等价于 "$1 $2 $3 ..."
"$@" 双引号包裹后等价于 "$1" "$2" "$3" ...
所以
/test.sh arg1 arg2 "arg3 $@"
相当于
/test.sh arg1 arg2 "arg3 $1" "$2" "$3" ...
JohnLou
2016-11-18 23:27:42 +08:00
@jkeylu 好像解决了,感谢。
ik
2016-11-19 08:40:52 +08:00
@JohnLou 好吧。解决就好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/321602

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX