큰따옴표 안의 와일드카드 문자를 어떻게 해결합니까? [복사]

큰따옴표 안의 와일드카드 문자를 어떻게 해결합니까? [복사]

Bash에서 파일 와일드카드 *는 큰따옴표 안에서 작동하지 않지만 파일 이름에 공백이 포함되어 있으므로 파일 이름을 쉘 스크립트에 전달하기 전에 큰따옴표를 사용해야 합니다. 어떻게 해야 하나요?

예를 들어

myscript.sh "0$i*.pdf"

PDF 파일은 "01a b.pdf" 또는 "02c d.pdf"일 수 있습니다. 나는 그때 i저장하는 데 사용합니다 .12

감사해요.

답변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

관련 정보