代码之家  ›  专栏  ›  技术社区  ›  Jeffrey04 George

在shell脚本中传递包含空格的参数

  •  27
  • Jeffrey04 George  · 技术社区  · 16 年前

    我需要我的脚本能够接受带有空格字符的参数。例如,如果我有如下脚本:

    for SOME_VAR in $@
    do
        echo "$SOME_VAR"
        cd "$SOME_VAR"
    done;
    

    如果我将参数传递给脚本(假设它被调用 foo.sh )

    sh foo.sh "Hello world"
    

    Hello world 并将目录更改为 你好,世界 . 但我收到的却是以下错误消息:

    hello
    cd: 5: can't cd to hello
    world
    cd: 5: can't cd to world
    

    1 回复  |  直到 7 年前
        1
  •  50
  •   Aaron Digulla    16 年前

    你必须把包装好 $@ 引用如下: "$@"

    这告诉shell忽略参数中的空格;它不会将所有参数转换为很长的字符串。