如何防止 bash 转换参数?

如何防止 bash 转换参数?

我正在尝试使用脚本的参数来查找其他文件。问题是,当我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如果您愿意,可以将其重新打开。

相关内容