代码之家  ›  专栏  ›  技术社区  ›  dogbane

在shell脚本之间传递参数,但保留引号

  •  29
  • dogbane  · 技术社区  · 16 年前

    如何将一个shell脚本的所有参数传递给另一个shell脚本?我尝试了$*,但正如我所预料的那样,如果您引用了参数,则这不起作用。

    $ cat script1.sh
    
    #! /bin/sh
    ./script2.sh $*
    
    $ cat script2.sh
    
    #! /bin/sh
    echo $1
    echo $2
    echo $3
    
    $ script1.sh apple "pear orange" banana
    apple
    pear
    orange
    

    我想把它打印出来:

    apple
    pear orange
    banana
    
    1 回复  |  直到 16 年前
        1
  •  32
  •   ZoogieZork    11 年前

    使用 "$@" $* 要保留引号,请执行以下操作:

    ./script2.sh "$@"
    

    http://tldp.org/LDP/abs/html/internalvariables.html

    $*
    所有位置参数,视为单个单词


    与$*相同,但每个参数都是带引号的字符串,即 参数被完整地传递,没有解释或扩展。 列表被视为一个单独的单词。

    注:当然,应引用“$@”。