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