103.1基礎
HOMEには/home/labが設定されている。
変数の値ではなく、5文字の$HOMEをそのまま表示する。
適切なコマンドはどれか。
× 不正解
Bashのシングルクォート内では、各文字がリテラルとして扱われる。ダブルクォート内では$による展開が残る。
詳細解説
誤り
printf '%s\n' "$HOME"ダブルクォート内ではパラメータ展開が行われ、/home/labになる。
ダブルクォート内でも$HOMEは/home/labへ展開される。
誤り
printf '%s\n' $HOMEクォートがなくても$HOMEは展開される。
引用符がなくてもパラメータ展開は実行される。
正しい
printf '%s\n' '$HOME'シングルクォートは$を含む文字列をそのまま保持する。
正解。シングルクォートが$HOMEを文字列のまま保持する。
誤り
printf '%s\n' "HOME"$記号を含まないためHOMEだけを表示する。
HOMEという文字列だけで、必要な$記号を含まない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s\n' '$HOME'期待される結果
$HOME理解のポイント
- シングルクォート
- ダブルクォート
- パラメータ展開
確認時の注意
- 確認環境: Bash 5.2
基礎のおさらい
引用符の選択
文字を完全にそのまま扱うならシングルクォート、値を安全に展開するならダブルクォートを使う。
表示と展開
printfの前にシェルが引用符処理と展開を行い、その結果が引数になる。
問題IDKP-103-018
確認環境Bash 5.2
最終技術確認2026-08-12
誤り・権利侵害を報告