🕵️

【Linux】シングルクォーテーション、ダブルクォーテーション、バッククォーテーションの違いを解説

2023/11/29に公開

1. はじめに

Linuxにおける、
・「'」...シングルクォーテーション
・「"」...ダブルクォーテーション
・「`」...バッククォーテーション
の違いを分かりやすく理解する方法は、DATE変数・date文字列・dateコマンドを用いた例だと思っています。

【引用符の違い】

2. 比較の事前準備

まず、dateコマンドとは、現在の日時を出力するコマンドです。

Pen@DESKTOP-1234567:~$ date
Wed Nov 29 00:08:57 JST 2023

次に、DATE変数を定義します。「date」文字列を代入します。
変数を定義する形は、[ 変数名 = 値 ] です。

Pen@DESKTOP-1234567:~$ DATE=date

なお、変数の前に$を付けることで、変数を参照することが出来ます。
echoコマンドと一緒に用いれば、変数が定義されたことを確認できます。

Pen@DESKTOP-1234567:~$ echo $DATE
date

3. 引用符の比較

では、本題の引用符による出力結果の違いを見ていきます。

3-1. 「'」...シングルクォーテーション

引用符の中は、全て文字列と解釈されます。

Pen@DESKTOP-1234567:~$ echo '$DATE'
$DATE

変数を参照するための$まで文字列になってますね...シングルクォーテーション強し...

3-2. 「"」...ダブルクォーテーション

引用符の中は、原則として文字列と解釈されます。但し、変数が含まれている場合、変数を参照します。その他のパターンもあり。

Pen@DESKTOP-1234567:~$ echo "$DATE"
date

DATE変数には、「date」という文字が代入されていたので、出力は「date」となります。

3-3. 「`」...バッククォーテーション

引用符の中は、コマンドとして解釈されます。

Pen@DESKTOP-1234567:~$ echo `$DATE`
Wed Nov 29 00:09:53 JST 2023

少しわかりずらいですが、まずDATE変数であることから「date」が参照されます。
それが、コマンドとして解釈されるため、出力は現在の日時となります。

おまけ

理解を深めたい方向けに、合わせ技をやってみます。

Pen@DESKTOP-4BGSA7E:~$ echo "今日の日付は`date`です"
今日の日付はWed Nov 29 00:38:37 JST 2023です
Pen@DESKTOP-4BGSA7E:~$ echo '今日の日付は`date`です'
今日の日付は`date`です

上の2つの違いが分かりますか...?
シングルクォーテーションの中は、全て文字列と解釈されるのでしたよね。
なので、後者はdateコマンドが実行されずに文字列扱いになっています。

Discussion