次のような単純なループで
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"