V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
JohnLou
V2EX  ›  问与答

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

  •  
  •   JohnLou · 2016-11-18 22:57:21 +08:00 · 3070 次点击
    这是一个创建于 2729 天前的主题,其中的信息可能已经有所发展或是发生改变。

    bash 脚本 learn.sh 里有一行

    /test.sh arg1 arg2 "arg3 $@"

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

    8 条回复    2016-11-19 08:40:52 +08:00
    ik
        1
    ik  
       2016-11-18 23:05:13 +08:00 via iPhone
    "\"\""
    不知道一样行不行
    JohnLou
        2
    JohnLou  
    OP
       2016-11-18 23:06:46 +08:00
    @ik 不可以。。
    vghdjgh
        3
    vghdjgh  
       2016-11-18 23:08:55 +08:00
    双引号外面套单引号?
    ik
        4
    ik  
       2016-11-18 23:12:08 +08:00 via iPhone
    @JohnLou 好吧,脚本用的不多,不太清楚,
    几个参数使用分隔符合并成一个参数,传递参数后再分割… 我只能想到这个办法了。仅做参考
    JohnLou
        5
    JohnLou  
    OP
       2016-11-18 23:14:04 +08:00
    @ik tesh.sh 不能动,我这里是二进制的,只是举个例子。
    jkeylu
        6
    jkeylu  
       2016-11-18 23:22:46 +08:00   ❤️ 1
    把 $@ 改为 $*
    "$*" 双引号包裹后等价于 "$1 $2 $3 ..."
    "$@" 双引号包裹后等价于 "$1" "$2" "$3" ...
    所以
    /test.sh arg1 arg2 "arg3 $@"
    相当于
    /test.sh arg1 arg2 "arg3 $1" "$2" "$3" ...
    JohnLou
        7
    JohnLou  
    OP
       2016-11-18 23:27:42 +08:00
    @jkeylu 好像解决了,感谢。
    ik
        8
    ik  
       2016-11-19 08:40:52 +08:00 via iPhone
    @JohnLou 好吧。解决就好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4250 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:20 · PVG 13:20 · LAX 22:20 · JFK 01:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.