다음과 같은 간단한 루프에서
for f in $(ls -1) ;
do
something
done
하나하나 보관하고 싶은데철사ls -1
변수의 출력입니다 f
.
설정하지 않고 이를 수행할 수 있는 방법이 있습니까 IFS=$'\n'
?
답변1
리뷰에서도 말했듯이,파싱되지 않음ls
잘못되기 쉽고 완전히 불필요합니다. 당신에게 필요한 것은
for f in *;
do
something
done
이는 현재 디렉토리의 파일 및 디렉토리 1을$f
반복 하고 각각(공백 및 모두)을 다음과 같이 저장합니다.
$ ls -A1
file1
file 2
$ for f in *; do echo "File is '$f'"; done
File is 'file1'
File is 'file 2'
1bash.
에서는 .dotglob
shopt -s dotglob
답변2
대신 while 루프를 사용하세요:
$ touch "one file"
$ touch "second file edsfs"
$ ls
one file second file edsfs
$ ls -1
one file
second file edsfs
$ for f in $(ls -1); do echo "\"$f\""; done
"one"
"file"
"second"
"file"
"edsfs"
$ while read f; do echo "\"$f\""; done < <(ls -1)
"one file"
"second file edsfs"