シェルスクリプトを作成する際、特殊な役割を果たす文字があります。例えば「$」は変数の中身にアクセスするときに使います。
このような特殊文字について理解をしていないと、意図せず思わぬ動作を招いてしまうことがあります。
また、このような特殊文字を使いたい場合のエスケープシーケンスの理解は非常に重要です。エスケープシーケンスを使用することでそれらの特殊な意味を無効にできます。
この記事では、シェルスクリプトでよく使われる特殊文字とそのエスケープ方法について詳しく解説します。
目次
シェルスクリプトの特殊文字
以下のような文字がシェルスクリプトの特殊文字として知られています。
ワイルドカード: *, ?, [] など
変数展開: $
引用符: ', "
コマンド置換: `
バッククォート: \
その他: ;, |, &, (, ), >, < など
エスケープシーケンス
バックスラッシュによるエスケープ
これらの文字を単に文字列として使用したいときは、基本的には「\」(バックスラッシュ)を前に置いてエスケープして使いましょう。
以下に例を紹介します。
#!/bin/bash
# * を文字として扱う
echo \*
# $VAR を文字列 "$VAR" として扱う
echo \$VAR
# バックスラッシュをエスケープしたい場合はバックスラッシュ2回で良い
echo "This is a backslash: \\"
クォート内のエスケープ
シングルクォートやダブルクォートの中でエスケープするときには少し注意が必要です。
シングルクォートの場合は、その中ですべての文字が特別な意味を持たなくなります。内部の中でエスケープはできないため、以下の例では「$」がそのまま表示されます。
echo 'This is a single quote string with a dollar sign: $'
ダブルクォートの場合には、内部でのエスケープが可能です。「\」を使って特別な意味を無効にできます。
echo "This is a variable: \$variable"
まとめ
シェルスクリプトでの特殊文字とエスケープは、柔軟なスクリプトを書く上で不可欠です。
特殊文字が持つ特別な意味を理解し、必要に応じてエスケープを使うことで、意図した通りにスクリプトを動作させることができます。