- ベストアンサー
【シェルスクリプト】 for文で単語分割させたくない
シェルスクリプトのfor文で単語分割させないで、一行ずつ処理させるにはどうすればよいのでしょうか。 ---------- $ ca file test1 test1 test2 test2 test3 test3 ---------- #!/bin/bash for i in `cat file` do echo $i done ---------- 「test1 test1」、「test2 test2」、「test3 test3」といった具合に、行単位で処理したいです。 しかし結果は test1 test1 test2 test2 test3 test3 と単語分割されてしまいます。 空白を含んでいる場合に行単位で処理するにはどうすればよいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
セパレータはIFSで指定します。デフォルトは、空白・タブ・改行です。 #!/bin/bash IFS=$'\n' for i in `cat file` do IFS=$' \t\n' echo $i done while read i;do echo $i;done < file とやるのが普通です。
その他の回答 (1)
- since1983
- ベストアンサー率39% (33/84)
bashにはあまり詳しくないのですが、次のようにしてできないでしょうか? ------------------------------------- #!/bin/bash cat file | while read line do echo ${line} done -------------------------------------
お礼
ご回答ありがとうございます。 cat で流して while させると行単位で扱えますね。 これでできましたが、向学のために、for文で扱う方法をご存知でしたらまたお教えください。
お礼
ご回答ありがとうございました。 セパレータについての知識がありませんでした。 大変勉強になりました。