bash:将模式存储在变量中而不计算模式



>我正在从命令行读取字符串,并将其存储到变量中。我遇到的问题是,当我尝试存储模式(例如 *.cpp)时,如果我的当前目录中有匹配项,变量最终将保存与该模式的第一个匹配项,如果没有匹配项,则保存模式。我需要做什么才能将模式存储到字符串中?

问题即代码:

pattern=$1
#say $1 is *.cpp
#what do I need to do to $1 for pattern to hold *.cpp rather than the 1st match to *.cpp

编辑:我确实在引号中包装了 1 美元,但我的结果与根本不使用引号相同。

作为可复制案例的问题:

#$1 is *.cpp
#!/bin/bash
pattern = "$1"
echo $pattern

模式不回显 *.cpp,但找到的第一个与模式匹配的文件。

做了一些测试。您似乎需要在调用脚本中的使用中引用。即在脚本中:

pattern=$1
echo "$pattern"

然后在调用脚本时:

./test.sh "*.cpp"

结果:

*.cpp

传递参数时可以使用单引号,以便保留确切的字符串。

myscript.sh:

#!/bin/bash
echo $1

从 cmdline 调用:

# ./myscript.sh '*.cpp'
*cpp

反斜杠转义的结果也相同:

# ./myscript.sh *.cpp
*cpp

最新更新