>我正在从命令行读取字符串,并将其存储到变量中。我遇到的问题是,当我尝试存储模式(例如 *.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