내가 만든 bash 스크립트에 다음 코드가 있습니다. 경로에 공백이 없는 디렉터리에서 실행하면 예상대로 작동하지만 공백이 있는 디렉터리에서 실행하면 실패합니다. 어떻게든 탈출해야 한다고 확신하지만, 시도한 어떤 것도 작동하지 않는 것 같습니다.
for file in `pwd`/*
do
echo file:$file
done
"실패"란 의미는 "~/dir 1/test" 경로에서 명령을 실행하면 다음이 에코된다는 것입니다.
file: ~/dir
file: 1/
file: test
디렉토리의 파일을 나열하고 싶습니다(현재 디렉토리에 공백이 없으면 나열됩니다).
file: file 1
file: file 2
file: file 3
현재 디렉토리에 공백이 있는 경우에만 문제가 발생하며 공백이 있는 파일은 잘 처리됩니다.
나는 여기에서 몇 가지 유사한 예를 읽었습니다.공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?그리고이름에 공백이 있는 파일을 반복하시겠습니까?하지만 (관련이 있는 경우) 내 구체적인 예에 어떻게 적용되는지 알 수 없습니다.
답변1
Paulo Tomé 덕분에 다음과 같이 변경해야 했습니다.
for file in "$(pwd)"/*
do
echo file:"$file"
done