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"

関連情報