Bash
如何解決雙引號內的萬用字元?
在 bash 中,文件 globbing * 在雙引號內不起作用,但我的文件名包含空格,所以我需要在將文件名傳遞給 shell 腳本之前用雙引號引起來。我怎樣才能做到這一點?
例如
myscript.sh "0$i*.pdf"
其中 pdf 文件可能是“01a b.pdf”、“02c d.pdf”。我用
i
儲存1
然後2
。謝謝。
簡單地取消引用 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