如何将字符串作为bash脚本的命令行参数传递?

时间:2012-11-01 11:06:09

标签: bash

我想将一个字符串作为命令行参数传递给bash脚本; 我的bash脚本就是:

>cat test_script.sh

for i in $*
do 
echo $i
done

我打字

  

bash test_script.sh test1 test2" test3 test4"

输出:

test1
test2
test3
test4

我期待的输出:

test1
test2
test3 test4

我尝试使用反斜杠(test1 test2" test3 \ test4")和单引号,但我没有得到预期的结果。

如何获得预期的输出?

2 个答案:

答案 0 :(得分:8)

您需要使用:

for i in "$@"
do echo $i
done

甚至:

for i in "$@"
do echo "$i"
done

第一个会在参数中丢失多个空格(但会将参数的单词保持在一起)。第二个保留参数中的空格。

您也可以省略in "$@"子句;如果你写for i(但个人而言,我从不使用速记),这是隐含的。

答案 1 :(得分:-1)

尝试使用printf

for i in $* do $(printf '%q' $i) done