2

わかりました、私は別の種類のスクリプトに取り組んでいますが、問題は次のようなものになります: 次の「for ループ」を想定します。

for i in $(ls -l); do echo $i; done

問題は、「for ループ」が値をスペースで区切るため、各「i」が「ls -l」のスペースで区切られた各単語に等しいことです。したがって、出力は次のようになります。

合計

24

drwxrwxr-x.

2

ジェームズ

ジェームズ

4096

10月

26

16:56

BG

. . .

しかし、各刺激変数「i」全体で、各単語ではなく「ls -a」の行全体と等しくしたいのです。つまり、「i」は行全体に等しい

"drwxrwxr-x.  2 james james 4096 Oct 26 16:56 bg" 

それぞれの言葉でイライラするのではなく。私は多くの回避策を試しましたが、どれも機能せず、ちょっとびっくりしました。

「for ループ」をスペースではなく改行で区切るように指示する方法はありますか

PS上記の例は単なる説明のためのものです(少し無意味だと主張するかもしれません)が、私の問題はそれに似ています。

4

1 に答える 1

3

代わりに、次のことができます

ls -l | while IFS= read -r l ; do echo "This is it: $l" ; done

またはする

IFS=\\n

を実行する前にfor、副作用の可能性があるため避けます。

于 2013-10-27T15:47:12.067 に答える