103.1基礎
LAB_FLAG=onが現在のBashに設定されている。
値を空文字へ変更するのではなく、変数自体を未設定にする。
適切なコマンドはどれか。
× 不正解
unsetは変数の定義を取り除く。空文字の代入とは、設定状態を調べたときの結果が異なる。
詳細解説
誤り
LAB_FLAG=値を空文字にするが、変数は設定済みのまま残る。
LAB_FLAGは設定済みのまま、値だけが空になる。
正しい
unset LAB_FLAGunsetは指定したシェル変数を未設定にする。
正解。現在のシェルからLAB_FLAGの定義を取り除く。
誤り
export LAB_FLAG変数にexport属性を付ける操作であり、削除しない。
変数を子プロセスへ渡す属性を付ける操作である。
誤り
set LAB_FLAG位置パラメータを設定し、LAB_FLAGという変数は削除しない。
setの引数は位置パラメータになり、同名変数を削除しない。
実際に確かめる
一時的な検証環境で実行できる例です。
LAB_FLAG=on
unset LAB_FLAG
if [[ -v LAB_FLAG ]]; then echo set; else echo unset; fi期待される結果
unset理解のポイント
- 未設定と空文字の違い
- unsetの役割
- [[ -v ]]による設定状態確認
確認時の注意
- 確認環境: Bash 5.2
基礎のおさらい
未設定と空文字
デフォルト値展開や-vによる判定では両者の違いが結果へ影響する。
unsetの範囲
現在のシェルから削除されるため、以後起動する子へも渡らない。
問題IDKP-103-017
確認環境Bash 5.2
最終技術確認2026-08-12
誤り・権利侵害を報告