---
title: LPIC101_echo_B24
tags: 
author: [Yukiko](https://docswell.com/user/yukiko_it)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/3EK9W3XVED.jpg?width=480
description: LPIC101_echo_B24 by Yukiko
published: April 22, 26
canonical: https://docswell.com/s/yukiko_it/KMQ7Q9-2026-04-22-061521
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/3EK9W3XVED.jpg)

LPIC-101 v5.0
｜ 小豆 本対 応
echo とクォーテーション
シングルクォート / ダブルクォート / 変数展開の違い
新卒・文系・未経験のための IT 研修
printf も含めて「何が hello になるか」を見抜く
うさうさラーメン店方式


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L73W1GRQ75.jpg)

PROBLEM
今日のお題 ― B問題セット 問24
シェルに「hello」を出力するコマンドはどれですか。
1
echo $hello
2
echo &#039;hello&#039;
3
echo &quot;hello&quot;
4
MSG=hello; echo $MSG
5
printf hello
複数選択（正解は2つ）
LPIC-101 ｜ echo / printf とクォーテーション
2 / 10


# Page. 3

![Page Image](https://bcdn.docswell.com/page/87DKX1YWJG.jpg)

① この用語
クォーテーションって、なに？
用語
&#039; &quot; と 変数展開
bashが文字列をどう解釈するかのルール
シングル &#039;...&#039; → そのまま
うさうさラーメン店で例えると
&#039;hello&#039;
→ 「hello」そのまま
&quot;hello&quot;
→ 「hello」そのまま
$MSG
→ 黒板の内容に置き換え
$hello
→ 黒板が未設定→何も出ない
ダブル &quot;...&quot; → 変数は展開
$変数名 → 値に置き換え
未定義の $変数 は 空文字扱い。
※ 注文書の読み方で結果が変わる
LPIC-101 ｜ echo / printf とクォーテーション
3 / 10


# Page. 4

![Page Image](https://bcdn.docswell.com/page/VJPKPQ6XE8.jpg)

② 簡単に
&#039;...&#039;
&quot;...&quot;
なし
3つのクォート方式 ― 何をどう展開するか
シングル
$変数
* やその他
全て文字通り
× 展開しない
× 特殊文字無効
ダブル
$変数
* やその他
変数・コマンド代入OK
○ 展開する
△ 一部有効
裸文字
$変数
* やその他
最も緩い
○ 展開する
○ グロブも効く
★ 「変数を中身にしたい → &quot; か 裸」、「$をそのまま出したい → &#039;」
LPIC-101 ｜ echo / printf とクォーテーション
4 / 10


# Page. 5

![Page Image](https://bcdn.docswell.com/page/2EVV2533EQ.jpg)

③ 詳しく①
5つの選択肢を1つずつ追跡
1
echo $hello
→ (空行)
$hello は未定義 → 空文字
2
echo &#039;hello&#039;
→ hello
&#039; で囲んだ hello がそのまま
3
echo &quot;hello&quot;
→ hello
&quot; で囲んだ hello がそのまま
4
MSG=hello; echo $MSG
→ hello
$MSG が hello に展開
5
printf hello
→ hello (改行なし)
printf が hello を出力
★ 正解は 2・3・4・5 の4つ。hello が出るのは4通りもある
LPIC-101 ｜ echo / printf とクォーテーション
5 / 10


# Page. 6

![Page Image](https://bcdn.docswell.com/page/57GLR63YEL.jpg)

③ 詳しく②
echo と printf の違い
echo
printf
デフォルトで改行付き
デフォルトで改行なし
$ echo hello
hello⏎
$ printf hello
hello
↑プロンプトと続く
改行なしにしたい時:
改行したい時は \n:
$ echo -n hello
hello
$ printf &#039;hello\n&#039;
エスケープ解釈:
書式指定子が使える:
$ echo -e &#039;a\tb&#039;
$ printf &#039;%s=%d&#039; age 30
★ どちらも「hello」は出力する。問題文が「厳密にhelloだけ」ではなく改行有無は問われていない
LPIC-101 ｜ echo / printf とクォーテーション
6 / 10


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EQYV456JP.jpg)

③ 詳しく③
実機ハンズオン ― クォートの違いを確かめる
クォートの挙動を確認する定番の試し方。Ubuntu/RHEL共通(bash)。
Terminal ― クォートの挙動
# 変数セット前の状態
$ echo $hello
(何も出力されない)
# リテラル3通り
$ echo &#039;hello&#039;
hello
$ echo &quot;hello&quot;
hello
# 変数に入れて展開
$ MSG=hello; echo $MSG
hello
# printf は改行なし→次プロンプトが続く
$ printf hello
hello$
LPIC-101 ｜ echo / printf とクォーテーション
7 / 10


# Page. 8

![Page Image](https://bcdn.docswell.com/page/KJ4WMQ9M71.jpg)

APPLY
原理原則で5択を斬る
#
コマンド
判定
理由
1
echo $hello
× 誤り
未定義の $hello は空。空行だけが出て hello は出ない
2
echo &#039;hello&#039;
○ 正解
シングルクォート内の hello がそのまま出力される
3
echo &quot;hello&quot;
○ 正解
ダブルクォート内の hello がそのまま出力される
4
MSG=hello; echo $MSG
○ 正解
変数に hello を代入、$MSG で展開されて hello が出る
5
printf hello
○ 正解
printf が hello を出力(改行なしだが文字は出る)
→ 正解は 2・3・4・5 の4つ。①だけが hello を出力しない。
LPIC-101 ｜ echo / printf とクォーテーション
8 / 10


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LE1Y8PKY7G.jpg)

ANSWER
正解 ― helloを出すのは4通り
正解 ②③④⑤（4つ）
「hello」という文字が出力されるコマンド
✓
echo &#039;hello&#039;
✓
MSG=hello; echo $MSG
シングルクォート
変数展開
✓
echo &quot;hello&quot;
✓
printf hello
ダブルクォート
printf 命令
✗ echo $hello ← $hello は未定義変数=空文字のため、hello という文字列は出力されない
LPIC-101 ｜ echo / printf とクォーテーション
9 / 10


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GEWGZ2D1J2.jpg)

④ 原理原則・一言でまとめ
echo と printf は
「クォートの種類と $ の有無」で挙動が変わる。
&#039;...&#039;
&quot;$X&quot;
printf
そのまま
変数展開
改行なし出力
未定義変数 $hello は「空」。hello という文字は出ない点に注意
面白きなき世を面白く ─ 石黒 友季子


