Bash: 변수를 사용하여 "ls -1" 출력 라인을 반복합니다.

Bash: 변수를 사용하여 "ls -1" 출력 라인을 반복합니다.

다음과 같은 간단한 루프에서

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. 에서는 .dotglobshopt -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"

관련 정보