ieIFS
に設定しました。値を確認すると、二重引用符を使用しないと空白になります。x
IFS=x
IFS
~ $ echo $IFS | cat -e
$
~ $ echo "$IFS" | cat -e
x$
~ $ echo $HOME
/home/mar
~ $ echo "$HOME"
/home/mar
~ $
上記のように、$HOME
動作はこれと同じではありません。この行動の理由は何ですか?
ベストアンサー1
変数が展開された後、単語分割が発生して空の単語に分割されます。分割は、変数の各文字を区切り文字として使用IFS
され、$IFS
の文字のみに拡張されるため、空のIFS
単語に分割されます。
たとえば、次のようになります。
IFS=xxx;
printf %q $IFS
''''''[root@localhost ~]#
二重引用符を使用すると、bashに引用符内のすべての内容を1つの単語として処理するように指示します。
printf %q "$IFS"
xxx[root@localhost ~]#