変数の割り当てとIFS

変数の割り当てとIFS

GregのwikiによるとIFS変数の使用:

  • readコマンドで複数の変数名引数が指定されている場合、IFS各変数が単一の入力フィールドを持つように入力行を分割するために使用されます。
  • 引用符のない拡張子に対してWordSplittingを実行すると、IFS拡張値を複数の単語に分割するために使用されます。
  • 実行"$*"または"${array[*]}"拡張すると、最初の文字はIFS要素間に配置され、最終出力文字列を構成します。
  • 実行されると、の"${!prefix*}"最初の文字がIFS変数名の間に配置され、出力文字列を形成します。
  • IFScomplete -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"

おすすめ記事