您好我想编写一个脚本,允许我在命令行参数中使用任何字符(特殊包含)。因此,如果我像这样调用脚本它不应该有错误:
./myscript file *
在脚本中我想在带有该符号的目录中查找文件(但请注意,它不一定是该符号可能是%,@,#等所以我使用find但不知道如何逃避。
search = $1
find=$(find $search -name "*$2")
如果我查找的文件有符号通知该人,但是如果没有将该符号添加到该目录,并且我不知道如何逃避它。下面是我用来更改它的代码,但它也需要进行转义。
mv $search $search$2
有关逃避它的任何想法,我做了平常但得到了奇怪的结果。即
find=$(find $search -name "*\$2")
mv $search $search\$2
答案 0 :(得分:0)
如果我理解正确,调用必须如下所示,以避免shell在调用脚本之前展开*
。
./myscript file '*'
在您的脚本中,只需引用参数扩展即可。但是,您必须将反斜杠传递给-name
的参数,以便find
本身也不会特别对待该角色。
# No spaces around the equal sign!
search=$1
find=$(find "$search" -name \*\'"$2")
# ...
mv "$search" "$search$2"