GregのwikiによるとIFS
変数の使用:
read
コマンドで複数の変数名引数が指定されている場合、IFS
各変数が単一の入力フィールドを持つように入力行を分割するために使用されます。- 引用符のない拡張子に対してWordSplittingを実行すると、
IFS
拡張値を複数の単語に分割するために使用されます。 - 実行
"$*"
または"${array[*]}"
拡張すると、最初の文字はIFS
要素間に配置され、最終出力文字列を構成します。 - 実行されると、の
"${!prefix*}"
最初の文字がIFS
変数名の間に配置され、出力文字列を形成します。 IFS
complete -W
以下で使用するようにプログラム可能で完了
IFS
だから私の質問は、なぜ変数の割り当てで役割を果たすべきですか?次の内容によると、bashはa:b:c:d
右の文字列にトークン化()を適用します。
$ IFS=: s=a:b:c:d
$ echo $s
a b c d
ベストアンサー1
しかし、実際にはそうではありません。あなたはする必要があります正しい引用。 IFS値に基づいて引用符なしの拡張にトークン化を適用します。問題はecho
タスクではなくコマンドです。
$ ( IFS=: s=a:b:c:d typeset -p s )
declare -- s="a:b:c:d"