3

KornShell (ksh) スクリプトで変更する前に IFS を保存しようとしています。バックアップ変数が適切に保存されていないことがわかったので、問題を再現する簡単なスクリプトを作成しました。

#!/usr/bin/ksh

OFIS=$IFS
echo "$IFS" | od -b
echo "$OIFS" | od -b

OIFS をエコーするときに期待することは、スペース (040)、タブ (011)、改行 (012) の 8 進数の ASCII 値である IFS をエコーするときと同じです。ただし、これは出力です。

0000000  040 011 012 012
0000004
0000000  012
0000001

IFS 変数の出力には 3 つの文字すべてが含まれているのに対し、OIFS の出力には改行 (012) だけが含まれていることに注意してください。私が見たすべてのフォーラムは、これが IFS のコピーを作成する方法であることを示していました。OIFSが正しく設定されていない理由を知っている人はいますか? $IFS を二重引用符で囲んでみましたが、同じ結果が得られました。

#!/usr/bin/ksh

OFIS="$IFS"
echo "$IFS" | od -b
echo "$OIFS" | od -b
0000000  040 011 012 012
0000004
0000000  012
0000001

私はAIX6で実行しています。

4

1 に答える 1