1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

シェルのダブルクォートとシングルクォートの違いは何ですか?

2022-02-09 06:16:18

1. 例

シェルは、文字列を二重引用符や一重引用符で囲んだり、引用符を使わずに文字列変数を定義するためによく使われます。以下にその例を示します。

str1="testString" //double quotes
str2='testString' //single quotes
str3=testString //without quotes

文字列変数の定義には、ダブルクォート、シングルクォート、クォートなしの3つの方法があるんですね。この3つの方法の違いは何でしょうか?また、シングルクォートとダブルクォートの違いは何でしょうか?

2. シングルクォート

シングルクォートは、文字列のWYSIWYGを定義します。つまり、シングルクォートの中にあるものはそのまま出力され、シングルクォートの中に見えるものは何でも出力されると表現します。シングルクォートはフルクォートであり、シングルクォートで囲まれたものは定数であろうと変数であろうと置換されます。

var=dablelv
echo '$var'

出力します。

$var

3. 二重引用符

二重引用符で囲まれた参照では、見えるものは見えません。コンテンツにコマンドや変数などがある場合、まず変数やコマンドが解析され、最終的なコンテンツが出力されます。二重引用符は部分引用符で、二重引用符で囲まれた内容は定数のままですが、変数は変数の内容に置き換えられます。

var=dablelv
echo '$var'

出力します。

ダブリュー

4. 引用禁止

引用符なしで文字列を定義する場合、文字列には空白文字(スペースやタブなど)を含めることができないため、引用符で囲む必要があります。一般に、連続した文字列、数値、パスなどは引用符で囲まないでかまいません。コンテンツにコマンドや変数などがある場合、まず変数やコマンドが解析され、最終的なコンテンツが出力されます。

str1="test String"
str2='test String'
str3=test String

echo $str1
echo $str2
echo $str3

出力します。

テスト文字列
テスト文字列

このように、引用符で囲まれていないスペースを含む文字列は、正しく出力されません。

5. 推奨事項

文字列定数はシングルクォートで囲みます。文字列に変数やコマンドなどが含まれる場合はダブルクォートを使用し、クォートしないでおくことはお勧めしません。

以上、シェルのダブルクォートとシングルクォートの違いについて詳しく説明しましたが、シェルのダブルクォートとシングルクォートについては、スクリプトハウスの他の関連記事にも目を通してみてください