我正在尝试使用脚本的参数来查找其他文件。问题是,当我x.*
在命令行中为脚本提供参数时,它会转换为x.sh
.有什么想法可以让我进入x.*
我的脚本吗?
命令行中的脚本:./script.sh x.*
.如果我尝试打印$1
它输出x.sh
。
答案1
您无法从脚本内部完成此操作。*
必须逃脱了,否则它将尝试匹配文件名(在您的情况下x.
,然后是任何内容,就像*
匹配文件名中任何字符串的全局运算符一样)。基本上,您可以通过三种方式来完成此操作 - 用单引号或双引号将字符串括起来:
./script.sh "x.*"
./script.sh 'x.*'
或者在有问题的字符前加上反斜杠:
./script.sh x.\*
正如杰夫在评论中提到的(谢谢),您还可以通过以下方式禁用全局扩展:
set -o noglob
set +o noglob
如果您愿意,可以将其重新打开。