終了ステータス$を引用する理由はありますか?変える?

終了ステータス$を引用する理由はありますか?変える?

Googleのbashスクリプトスタイルガイドを見て、終了ステータス変数を参照することを確認しました。$? ここ

if [[ "$?" -ne 0 ]]; then
    error_message
fi

戻り値は常に数値であると思いましたが、これを引用する理由は何ですか?

これは単なる良い習慣です(「$ @」のような他の特別なシェル変数を引用したいので)?

ベストアンサー1

おすすめ

あなたはこれを読むべきです素晴らしい答え詳細については。


数字を含む設定はIFSコードを破損する可能性があります。

$ IFS=0
$ echo test
$ [ $? -eq 0 ] && echo done
bash: [: : integer expression expected

一部のシェルはIFS環境(dash、、 )から継承ashできますが、一部はそうではありません(bash、、、)。しかし、誰かが環境を制御できるので、スクリプトはとにかく中断されるでしょう(そして影響を受けます)。zshksh$#$!

お客様の例では新しいテストを使用した[[...]]ため、フィールド分割がオフになっており、この場合は引用は必要ありません。以前のテストを使用している場合はこれが重要です[...]

$ IFS=0
$ echo test
$ [[ $? -eq 0 ]] && echo done
done

おすすめ記事