Bashでは、ファイルワイルドカード*は二重引用符内では機能しませんが、ファイル名にスペースが含まれているため、ファイル名をシェルスクリプトに渡す前に二重引用符を使用する必要があります。どうすればいいですか?
例えば
myscript.sh "0$i*.pdf"
PDFファイルは、「01a b.pdf」または「02c d.pdf」のいずれかです。私はi
それを保存するために使用します。1
2
ありがとうございます。
答え1
ただ地球を逆参照してください。
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