こんにちは。
シェルスクリプト(bash)の勉強中、IFS変数を変更した際のfor文の挙動について
分からない点が発生しましたため、質問いたします。
bashバージョン
GNU bash, バージョン 4.4.19(3)-release (i686-pc-msys)
GNU bash, バージョン 4.2.46(2)-release (x86_64-redhat-linux-gnu)
実行したこと
(1)まず、$IFSがデフォルト(空白、改行、水平タブ)の状態で以下のシェルを実行しました。
for i in abc def do echo string=$i done
実行結果
string=abc string=def
(2)次に、$IFSを"/"に変更し、同様のシェルを実行しました。
IFS=/ for i in abc//def do echo string=$i done
実行結果
string=abc def
質問事項
- (2)の実行結果についてですが、(1)の結果のように区切り文字で改行されて出力される想定でした。
しかし、実際は改行されて出力されず、しかも$iには入力値がそのまま(abc def)入っているように見えています。これはなぜでしょうか?
0. (2)についても(1)の実行結果のように区切り文字で改行させるにはどうしたら良いでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/31 10:58
2018/08/31 17:30