クォートとエスケープの使い方

シングルクォートとダブルクォート

クォートの種類によって、内部の変数($var)やコマンド置換($(...))が展開されるかどうかが変わります。

ダブルクォート (")

ダブルクォートで囲むと、変数やコマンド置換が展開されます。

code
var='World'
echo "Hello ${var}"
echo "Now: $(echo 'SUCCESS')"
stdout
Hello World
Now: SUCCESS

シングルクォート (')

シングルクォートで囲むと、すべての文字がリテラル(ただの文字)として扱われ、展開は行われません。

code
var='World'
echo 'Hello ${var}'
echo 'Now: $(echo "SUCCESS")'
stdout
Hello ${var}
Now: $(echo "SUCCESS")

エスケープ文字 (\)

バックスラッシュ(\)を文字の前に置くことで、その文字が持つ特別な意味を無効化(エスケープ)できます。

ダブルクォート内でのエスケープ

ダブルクォートの中で `$` や `"` を文字として表示したい場合に使用します。

code
echo "Price is \$100"
echo "Quote: \"Hello\""
stdout
Price is $100
Quote: "Hello"

ANSI C Quoting ($'...')

`$'...'` の形式を使うと、改行やタブなどのバックスラッシュ記法を直接解釈させることができます。

改行やタブの利用

code
# \n (改行) や \t (タブ) が解釈される
echo $'Line 1\nLine 2'
echo $'Column 1\tColumn 2'
stdout
Line 1
Line 2
Column 1	Column 2