在 bash 中,文件通配符 * 在双引号内不起作用,但我的文件名包含空格,因此我需要在将文件名传递给 shell 脚本之前使用双引号。我怎样才能做到这一点?
例如
myscript.sh "0$i*.pdf"
其中 pdf 文件可能是“01a b.pdf”、“02c d.pdf”。我用来i
存储1
然后2
。
谢谢。
答案1
只需取消对 glob 的引用即可。
myscript.sh "0$i"*".pdf"
看来您担心*
会扩展到包含空格的字符串,b
?这没问题,在路径名扩展(称为通配符)之后,空格将失去其语法值并变为文字。
查看执行示例:
$ ls -1
'01a b.pdf'
'01e f.pdf'
'02c d.pdf'
myscript.sh
$ cat myscript.sh
#!/bin/sh
for file in "$@"; do
echo "$file"
done
$ i=1
$ ./myscript.sh "0$i"*".pdf"
01a b.pdf
01e f.pdf