1.06.2基礎
スクリプトを./deploy.sh blue westとして起動する。
渡された位置引数の個数2を取得する。
参照する特殊パラメータはどれか。
× 不正解
$#はスクリプトや関数へ渡された位置引数の個数を返す。$0はこの個数に含まれない。
詳細解説
誤り
$0起動されたスクリプト名を表す。
$0は./deploy.shなどの起動名を表す。位置引数の一部として数えられず、値2にはならない。
誤り
$?直前コマンドの終了状態を表す。
$?は直前に完了したコマンドの終了状態である。スクリプトに渡された語数とは無関係である。
正しい
$#現在の位置引数の個数を表す。
$#は$1から始まる位置引数の個数を返す。blueとwestの2つがあるため値は2になる。
誤り
$$現在のシェルに対応するPIDを表す。
$$は現在のシェルプロセスの識別番号である。通常は実行ごとに異なる正の整数で、引数個数ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'printf "%s\n" "$#"' deploy.sh blue west期待される結果
2理解のポイント
- $#は引数個数
- $0は別扱い
- 入力検証に利用
確認時の注意
- 確認環境: POSIX sh / 短命プロセス
基礎のおさらい
$0と$#
$0は起動名であり、$#が数える位置引数には含まれない。
入力数の検証
[ "$#" -eq N ]などで必須引数数を確認し、不足時はusageを表示できる。
問題IDKL-102-931
確認環境POSIX sh / 短命プロセス
最終技術確認2026-08-13
誤り・権利侵害を報告