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
答え2
IFS には、スクリプトが実行される前のデフォルト値があります。パラメータ分割は、スクリプトを実行するbashインスタンスで行われます。これはIFSを設定していないため、通常は分割されます。