シェルスクリプトとクォーテーションについて

Linuxでは、コマンドが充実していて、簡単な処理だとシェルスクリプトだけでもいろんな用途に十分に対応できます。Linuxでの標準シェルは、bashで、このシェルを使う時にいつも忘れてしまうのが、各種クォーテーションの使い方です。知っているとかなり役立つのでまとめておきます。

「\」(バックスラシュ)

シェルで指定されている特殊文字を普通の文字として使用したいときに使います。バックスラシュの直後の1文字分の特殊文字は、普通の文字として扱われます。例えば、変数を表示する場合に使用する「;」を文字として表示する場合、次のようにします。

user01@debian:~$ var=TestData\;1.A\;2.B
user01@debian:~$ echo ${var}
TestData;1.A;2.B
user01@debian:~$

バックスラシュでクォートしない場合は、次のようなエラーになります。

user01@debian:~$ var=TestData;1.A;2.B
-bash: 1.A: command not found
-bash: 2.B: command not found
user01@debian:~$

セミコロンは、コマンドの区切れを表す特殊文字です。セミコロンを使わず上記のコマンドを記述すると次の用になります。

user01@debian:~$ var=TestData
user01@debian:~$ 1.A
user01@debian:~$ 2.B

「1.A」「2.B」などというコマンドは存在しないのでエラーになります。

「”」(ダブルクォーテーション)

シェルで指定されている特殊文字を普通の文字として使用したいときに使います。ダブルクォーテーションで囲まれた文字列の特殊文字は、通常の文字として扱われます。上記の例を書き直すと、次のようになります。

user01@debian:~$ var="TestData;1.A;2.B"
user01@debian:~$ echo ${var}
TestData;1.A;2.B
user01@debian:~$

ただし、「$」「`」「\」については、クォートされません。

user01@debian:~$ var="Test's Data"
user01@debian:~$ echo "Test Data is the ${var}."
Test Data is the Test's Data.
user01@debian:~$

user01@debian:~$ echo "Today : [`date`]"
Today : [2008年  8月 18日 月曜日 15:09:18 JST]
user01@debian:~$

「’」(シングルクォーテーション)

基本的には、ダブルクォーテーションの場合と同様に囲まれた文字列の特殊文字は、通常の文字として扱われるのですが、ダブルクォーテーションとの違いは、「$」「`」「\」の扱いのです。シングルクォーテーションの場合は、例外なくすべての特殊文字が文字列として扱われます。

user01@debian:~$ var="Test's Data"
user01@debian:~$ echo 'Test Data is the ${var}.'
Test Data is the ${var}.
user01@debian:~$

user01@debian:~$ echo 'Today : [`date`]'
Today : [`date`]
user01@debian:~$
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする