IFSは正確にどのようにレンダリングしますか?

IFSは正確にどのようにレンダリングしますか?

Bashのマニュアルページやその他のドキュメントを読んでいますが、説明は少し混乱しています。

次の簡単なスクリプトがあります。

#!/bin/bash

IFS=""

echo $2

var=A B C

echo $var

次のように実行すると:

LANG=C ./args2 3 4
4
./args2: line 7: B: command not found

本当に理解できません。なぜ2ドル= 4?マニュアルに次のように記載されている場合:

IFS値が空の場合、単語分割は発生しません。

var宣言と同じです。なぜ「B」について文句を言うのですか?それでは噴射は存在するのでしょうか?

ベストアンサー1

Bashマニュアルのこのセクションには、次の手順がリストされています。シェル操作

ステップ3では、スクリプトはコマンド、パラメータなどに分類されます。

  • このステップでは、「var = A」、「B」、および「C」タグを取得します。
  • セクションを参照してください簡単なコマンドそれは言います(強調):

    単純なコマンドは[...]です。これは、次のように区切られた一連の単語です。スペース

拡張(ステップ4)以前はトークン化を実行しません。

Quditが説明したように、あなたのシェルは「LANG=C ./args2 3 4」をトークンに分割します。今後スタートコマンド "./args2"

おすすめ記事