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

时间:2009-05-25 08:37:54

标签: shell

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

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

如果我将参数传递给脚本(假设它被称为foo.sh

sh foo.sh "Hello world"

我希望脚本能够打印Hello world并将目录更改为Hello world。但我收到此错误消息:

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

我究竟如何将带有空格字符的参数传递给shell脚本中的命令?

1 个答案:

答案 0 :(得分:45)

您也必须将$@括在引号中:"$@"

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