1.06.2基礎
./deploy.sh staging westとして実行する。
環境名stagingだけを変数targetへ代入する。
適切な記述はどれか。
× 不正解
$1は第1位置引数、$2は第2位置引数である。値を後で安全に使うときは変数展開を引用する。
詳細解説
正しい
target=$1第1位置引数stagingを代入する。
./deploy.shの後にある最初の語stagingは$1で参照できる。targetへ代入すると環境名だけを保持する。
誤り
target=$0スクリプトの起動名を代入する。
$0には./deploy.shという起動名が入る。配置対象の環境名stagingではない。
誤り
target=$#位置引数の個数2を代入する。
$#はstagingとwestの個数2を表す。引数の内容を返さない。
誤り
target=$2第2位置引数westを代入する。
$2は2番目の位置引数westを表す。環境名ではなくリージョン名がtargetへ入る。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'target=$1; printf "%s\n" "$target"' deploy.sh staging west期待される結果
staging理解のポイント
- $1は第1引数
- $2は第2引数
- $0は起動名
確認時の注意
- 確認環境: POSIX sh / 短命プロセス
- 引数不足時は$1が未設定になるため、nounset利用時は先に$#を検証する。
基礎のおさらい
二桁の番号
$10のような番号は${10}と波括弧で区切り、$1の後に文字0を連結した解釈を避ける。
代入と利用
target=$1の代入では単語分割されないが、後で使う際は"$target"と引用する。
問題IDKL-102-933
確認環境POSIX sh / 短命プロセス
最終技術確認2026-08-13
誤り・権利侵害を報告