1.03.1基礎
現在のBashに定義されているDEBUG_TOKENを、値が空の変数として残さず未定義にする。
適切なコマンドはどれか。
× 不正解
unset NAMEは変数の定義を削除する。NAME=は定義を残して値だけ空にするため状態が異なる。
詳細解説
正しい
unset DEBUG_TOKEN変数定義を現在のシェルから削除する。
正しい。unsetがDEBUG_TOKENの名前と値の定義を現在のシェルから取り除く。
誤り
DEBUG_TOKEN=空文字列の値を持つ定義済み変数として残す。
誤り。空文字列は値として存在するため、定義済みかを調べる処理ではtrueになる。
誤り
export -n DEBUG_TOKENexport属性を外すが、変数自体は定義済みのまま残る。
誤り。export -nは子への継承を止めるだけで、現在のシェルからDEBUG_TOKENを削除しない。
誤り
set DEBUG_TOKEN名前付き変数の削除を行う形式ではない。
誤り。setは引数なしで状態を表示するなどの機能を持つが、指定名の削除構文ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
DEBUG_TOKEN=value; unset DEBUG_TOKEN; if [[ -v DEBUG_TOKEN ]]; then echo defined; else echo unset; fi期待される結果
unset理解のポイント
- unsetは定義削除
- NAME=は空文字
- export -nは属性だけ
確認時の注意
- 確認環境: Bash 5.x / シェル変数のみ
基礎のおさらい
未定義と空
${NAME+x}や[[ -v NAME ]]などでは、未定義と空文字列を異なる状態として判定できる。
readonly
readonly変数など、属性によりunsetできない変数もある。
問題IDKL-101-434
確認環境Bash 5.x / シェル変数のみ
最終技術確認2026-08-13
誤り・権利侵害を報告