🕵️
【Linux】シングルクォーテーション、ダブルクォーテーション、バッククォーテーションの違いを解説
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