出力が異なって見えるのはなぜですか?

出力が異なって見えるのはなぜですか?

このスクリプトを実行すると、出力が次のように表示されることがあります。

1912:!    total e
ergy              = -1090.13343774 Ry
2310:!    total e
ergy              = -1090.20757070 Ry
2709:!    total e
ergy              = -1090.24296462 Ry
3084:!    total e
ergy              = -1090.25563488 Ry
3483:!    total e
ergy              = -1090.27085564 Ry
3870:!    total e
ergy              = -1090.27693129 Ry
4245:!    total e
ergy              = -1090.28213580 Ry
4632:!    total e
ergy              = -1090.29131927 Ry

時には次のようになります。

1912:!    total energy              = -1090.13343774 Ry
2310:!    total energy              = -1090.20757070 Ry
2709:!    total energy              = -1090.24296462 Ry
3084:!    total energy              = -1090.25563488 Ry
3483:!    total energy              = -1090.27085564 Ry
3870:!    total energy              = -1090.27693129 Ry
4245:!    total energy              = -1090.28213580 Ry

これは単にバグですか、それとも誤ってコードから何かを変更しましたか?

パスワード:

cm=$1
nm=$2
case $cm in
    "out")
        declare -a  en
        ec=$(grep -n "! " hw1_out_si_wire.txt)
        IFS='\n' en=($ec)
        for i in ${en[@]}
        do
            echo "$i"
        done
        ;;
    "in") echo "It's not my problem";;
esac

答え1

IFS='\n'内部フィールド区切り文字を2文字(\バックスラッシュ)と文字で構成するように設定しますnIFS=$'\n'改行文字のみを含めるように設定するには、このオプションを使用してください。

関連情報