1.06.2基礎
利用方法エラーのメッセージへ、呼び出し時に使われたスクリプト名を含める。
参照する特殊パラメータはどれか。
× 不正解
$0はスクリプトを起動したときの名前やパスを表す。表示名だけが必要ならbasenameと組み合わせられる。
詳細解説
誤り
$1第1位置引数を表し、スクリプト名ではない。
$1はスクリプト名の後に渡された最初の利用者引数である。引数がなければ空になり、起動名は得られない。
誤り
$#位置引数の個数を表す。
$#は位置引数数の整数である。usageの先頭へ表示するスクリプト名にはならない。
誤り
$@すべての位置引数を表す。
$@は位置引数の集合であり、起動されたスクリプト自身の名前を含まない。
正しい
$0シェルまたは起動されたスクリプトの名前を表す。
$0は./deploy.shなど呼び出し時に使われた名前を表す。usageメッセージへ実行名を反映できる。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'printf "usage: %s ARG\n" "$0"' ./deploy.sh期待される結果
usage: ./deploy.sh ARG理解のポイント
- $0は起動名
- 位置引数には含まれない
- usage表示に利用
確認時の注意
- 確認環境: POSIX sh / 短命プロセス
- $0だけから実体ファイルの正規化済み絶対パスを常に得られるとは限らない。
基礎のおさらい
表示名の整形
パス部分を除いた名前だけが必要ならbasename -- "$0"などで整形できる。
呼び出し方で変化
$0は絶対パス、相対パス、単なる名前など起動方法に応じた文字列になり得る。
問題IDKL-102-932
確認環境POSIX sh / 短命プロセス
最終技術確認2026-08-13
誤り・権利侵害を報告