1.06.2基礎
変数countが10以上ならmanyと表示する。
POSIX testの数値比較を使う。
適切な条件文はどれか。
× 不正解
testの-geは整数の以上比較である。変数を引用し、[と]の周囲には引数区切りの空白を置く。
詳細解説
誤り
if [ "$count" >= 10 ]; then echo many; fi[では>=を数値の以上比較演算子として使わない。
[では>=を1つの整数比較演算子として扱わない。シェルのリダイレクト解釈も絡み、有効な数値以上比較にならない。
誤り
if [ "$count" -le 10 ]; then echo many; fi-leは10以下を判定する。
-leはcountが10以下のとき成功する。12など10より大きい値でmanyを表示する要件と方向が逆である。
誤り
if [ "$count" -eq 10 ]; then echo many; fi-eqは10と等しい場合だけで、10より大きい値を含まない。
-eqはcountがちょうど10のときだけ成功する。11以上を含められないため、以上条件を完全には表さない。
正しい
if [ "$count" -ge 10 ]; then echo many; fi-geが整数のgreater than or equalを判定する。
-geはcountが10以上なら成功する整数比較である。引用により空や特殊文字による予期しない分割を抑える。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'count=12; if [ "$count" -ge 10 ]; then echo many; fi'期待される結果
many理解のポイント
- -geは以上
- -leは以下
- -eqは等値
確認時の注意
- 確認環境: POSIX sh / 状態変更なし
- countが整数でない場合は診断が出るため、入力検証を先に行う。
基礎のおさらい
整数演算子
-eq、-ne、-lt、-le、-gt、-geが等値・大小関係を表す。
空白も構文
[はコマンド名、]は最後の引数なので、各トークンの間に空白が必要である。
問題IDKL-102-928
確認環境POSIX sh / 状態変更なし
最終技術確認2026-08-13
誤り・権利侵害を報告