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
、、、)。しかし、誰かが環境を制御できるので、スクリプトはとにかく中断されるでしょう(そして影響を受けます)。zsh
ksh
$#
$!
お客様の例では新しいテストを使用した[[...]]
ため、フィールド分割がオフになっており、この場合は引用は必要ありません。以前のテストを使用している場合はこれが重要です[...]
。
$ IFS=0
$ echo test
$ [[ $? -eq 0 ]] && echo done
done