我有一个程序,想要通过传递来自Shell变量的参数来调用它。在本问题中,我假设它是这样给出的:
在所有这些情况下,我的程序
#!/bin/sh
echo $#
即打印出传递给它的参数数量。我们称其为count-args
。
我这样调用我的程序:
X="arg1 arg2"
count-args $X
这个方法很有效。但现在我的一个参数中有空格,我找不到转义它的方法。例如,以下内容都不可用:
X="Hello\ World"
X="Hello\\ World"
X="'Hello World'"
在所有这些情况下,我的程序
count-args
都会打印出2
。我想找到一种方法,使我能够传递字符串Hello World
并返回1
而不是2
。怎么办?
仅供澄清:我不想将所有参数作为单个字符串传递,例如:X="Hello World"
count-args $X
应该打印出2
。我想要一种传递包含空格的参数的方法。
X="Hello World"; count-args $X
应该打印出1
。为了实现这一点,请按照user1934428所示使用引号:"$X"
。如果您希望将此单个字符串解释为多个参数,则做法是错误的:http://mywiki.wooledge.org/BashFAQ/050! - dekkard