LPIC101_echo_B24

-- Views

April 22, 26

スライド概要

profile-image

はじめまして、ALJ Education Plus 株式会社のyukikoと申します。 IT教育支援や、DX推進が可能です。 ◆ スキル LPIC レベル2 AI / Python Splunk BI(データ可視化・分析) ◆ その他 新卒・未経験の学生向けに、エンジニア転職を応援する資料を趣味で作成しています。 もしよろしければご活用ください。 ◆IT研修講師をお探しの方は [email protected] にお気軽にお問い合わせください。 ※ALJ Education Plus 株式会社を通して、ご支援させていただきます。 ◆Zenn https://zenn.dev/yukiko_sapporo/articles/46c13e9f98b110

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

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

2.

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

3.

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

4.

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

5.

③ 詳しく① 5つの選択肢を1つずつ追跡 1 echo $hello → (空行) $hello は未定義 → 空文字 2 echo 'hello' → hello ' で囲んだ hello がそのまま 3 echo "hello" → hello " で囲んだ 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

6.

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

7.

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

8.

APPLY 原理原則で5択を斬る # コマンド 判定 理由 1 echo $hello × 誤り 未定義の $hello は空。空行だけが出て hello は出ない 2 echo 'hello' ○ 正解 シングルクォート内の hello がそのまま出力される 3 echo "hello" ○ 正解 ダブルクォート内の 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

9.

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

10.

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