Linuxとコマンドラインの基礎
$ name=world
$ echo 'Hello $name'
$ echo "Hello $name"上のコマンドを順に実行したときの、2つの echo の出力として、正しいものはどれか。
- A1つ目は Hello world、2つ目は Hello $name
- B1つ目も2つ目も Hello world
- C1つ目は Hello $name、2つ目は Hello world
答えと解説を見る
正解:C. 1つ目は Hello $name、2つ目は Hello world
シェルでは、単一引用符('…')で囲んだ部分は書いたとおりの文字列になり、$name のような変数は展開されません。二重引用符("…")の中では変数が展開されるので、2つ目は Hello world になります。二重引用符は、変数の値に空白が含まれていても1つの引数として扱わせるのにも使います。なお、代入の「name=world」では、= の前後に空白を入れることはできません。
- A. 単一引用符と二重引用符の働きが逆です。変数が展開されるのは二重引用符の中です。
- B. 単一引用符の中では、変数は展開されません。
- C. 正しい。単一引用符はそのまま、二重引用符は変数を展開します。