ここで出口が必要ない理由は何ですか?

ここで出口が必要ない理由は何ですか?
$ IFS=";"

$ read first second 
i am;a_i b c
$ echo $first
i am
$ echo $second
a_i b c

$ echo $IFS
  1. 私の言葉は正しいですか?これはread first second現在のシェルプロセスの子プロセスですか?それではなぜ必要ないのですかexport IFS=";"
  2. なぜ空ですかIFS

ベストアンサー1

私の言葉は正しいですか?読んだ最初の瞬間は、現在のシェルプロセスの子プロセスですか?それでは、IFS = ";"をエクスポートする必要がないのはなぜですか?

read一つでもないバッシュ組み込み関数。ここでは、サブシェルやサブプロセスは作成されませんIFS

IFSが空の理由は何ですか?

二重引用符を使用しなかったためです。 IFS値をに変更したので、拡張すると、;シェルecho $IFSは単語分割とワイルドカードを実行するための区切り文字として使用されます。これで何も印刷されません。$IFS;;

努力する:

$ IFS=";"
$ printf "%s\n" $IFS

$ printf "%s\n" "$IFS"
;

ノート

おすすめ記事