IFSが「一時的に」機能しない

IFSが「一時的に」機能しない

出力しようとしていますがa,b,c

これはうまくいきません:

a=(a b c)
IFS=, echo "${a[*]}"

しかし、これはうまくいきます:

a=(a b c)
IFS=,
echo "${a[*]}"

最初のものがなぜ機能しないのかを知っている人はいますか?

答え1

変数が拡張されたためです。今後IFS の新しい値が実際に設定されます。これの説明は次のとおりです。https://www.gnu.org/software/bash/manual/bash.html#Simple-Command-Expansion

現在のシェルに影響を与えずに値を設定するには、サブシェルを使用します。

(IFS=,; echo "${a[*]}")

関連情報