【发布时间】:2018-06-25 19:22:29
【问题描述】:
我正在编写一种自定义的rm 脚本,我想将通配符匹配传递给它。我在工作目录中有几个文件与我传递给脚本的通配符匹配,但我只从一个简单的测试用例中得到其中一个:
sh remove r*
在remove 脚本中,我将其缩减为仅
echo $1
目录内容如下:
$ ls
file2 file4 newTestFile remove_engine restore
file3 fileName_1234 remove remove_w restore_engine
这就是我得到的结果。
$ sh remove r*
remove
我知道 BASH 甚至在脚本执行之前就扩展了通配符。但是为什么我没有得到与f* 匹配的目录中的所有文件?
【问题讨论】:
-
$1是第一个匹配项。$2是第二个。"$@"都是他们 -
请注意,根本问题与通配无关。您可以使用
sh remove foo bar重现相同的问题
标签: bash shell unix command-line parameters