105.2基礎
POSIX互換のtest構文で、$MODEが文字列prodと等しいかを判定する。
適切な条件はどれか。
× 不正解
testの=は文字列比較に使う。変数展開を引用すると、空文字や空白を含む値でも引数構造を保てる。
詳細解説
誤り
[ "$MODE" -eq prod ]-eqは整数比較で、文字列prodとの比較に使わない。
誤り。-eqは両辺を整数として扱うため、prodのような文字列モード名の一致判定には使用しない。
正しい
[ "$MODE" = prod ]=はtestにおける文字列の一致を判定する。
正しい。POSIX testの=は左右の文字列が同一なら真となり、引用した$MODEをprodと比較できる。
誤り
[ "$MODE" -f prod ]-fは後続パスが通常ファイルかを調べる単項演算子である。
誤り。-fは1つのパスを取るファイル条件であり、左右2文字列の一致を比較する二項演算子ではない。
誤り
[ "$MODE" -gt prod ]-gtは整数の大小比較である。
誤り。-gtは整数の大小を判定するため、文字列prodとの同一性を調べる条件ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
MODE=prod; if [ "$MODE" = prod ]; then printf equal; fi期待される結果
equal理解のポイント
- =は文字列一致
- -eqは整数一致
- 変数展開を引用
確認時の注意
- 確認環境: POSIX互換test / GNU Bash 5.2
基礎のおさらい
空文字
変数が未定義または空でも"$MODE"を1つの空引数として渡せば、testの構文が崩れない。
Bash拡張
[[ ... ]]にも文字列比較があるが、移植可能な簡単なスクリプトでは[ ... ]の規則も理解しておく。
問題IDKP-105-627
確認環境POSIX互換test / GNU Bash 5.2
最終技術確認2026-08-13
誤り・権利侵害を報告