![큰따옴표 안의 와일드카드 문자를 어떻게 해결합니까? [복사]](https://linux55.com/image/184127/%ED%81%B0%EB%94%B0%EC%98%B4%ED%91%9C%20%EC%95%88%EC%9D%98%20%EC%99%80%EC%9D%BC%EB%93%9C%EC%B9%B4%EB%93%9C%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EA%B2%B0%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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