How to pass a string as command line argument for bash script?
本问题已经有最佳答案,请猛点这里访问。
我想将字符串作为命令行参数传递给bash脚本;简单来说,我的bash脚本是:
1 2 3 4 5 6 | >cat test_script.sh for i in $* do echo $i done |
我打字
bash test_script.sh test1 test2"test3 test4"
输出:
1 2 3 4 | test1 test2 test3 test4 |
我期望的输出:
1 2 3 | test1 test2 test3 test4 |
我尝试了反斜杠(test1 test2"test3 est4")和单引号,但我没有得到预期的结果。
如何获得预期的输出?
您需要使用:
1 2 3 | for i in"$@" do echo $i done |
甚至:
1 2 3 | for i in"$@" do echo"$i" done |
第一个会在一个参数中丢失多个空格(但会将一个参数的单词放在一起)。第二个保留了参数中的空格。
你也可以省略
尝试使用PrimTf
1 | for i in $* do $(printf '%q' $i) done |