【发布时间】:2016-03-21 10:50:06
【问题描述】:
我有一个程序,我想通过从 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。怎么样?
只是为了澄清:我不想将所有参数作为单个字符串传递,例如
X="Hello World"
count-args $X
应该打印出2。我想要一种方法来传递包含空格的参数。
【问题讨论】:
-
你自相矛盾。
X="Hello World"; count-args $X应该打印出1。要实现这一点,请使用 user1934428 所示的引号:"$X"。如果您希望将此单个字符串解释为多个参数,那么您做错了:mywiki.wooledge.org/BashFAQ/050! -
@dekkard:因为我找到了一种完全符合我要求的方法,所以我非常有信心我的要求是一致的。但是感谢该链接,它非常有帮助。
标签: bash shell parameter-passing sh