私は引用した文字列を入力することに慣れていましたが、今後設定ファイルと提案を検索するときにアポストロフィが使用されていることがわかります。
私はしばしばアポストロフィの内容を設定ファイルにコピーし、コードが一致するように引用符で置き換えます。
しかし、それらの違いは何ですか? (私は主にbashを目指しています。他のLinuxベースのスクリプトが異なる動作をしている場合はボーナスです。)
たとえば、
echo "Hello World!"
そしてecho 'Hello World!'
これらのいずれかを使用すると(フォーマットされた)変数を使用できない可能性があります。これは私と関係がありますか、それとも個人的な好みですか?
ベストアンサー1
一重引用符と二重引用符の間には違いがありますが、スタイルの問題ではありません。一重引用符は実際にあなたが書いた内容を反映しているので、あなたが書いた内容が印刷されると確信できます。一方、二重引用符は変数値を挿入します。
からman bash
:
文字を一重引用符で囲むと、引用符内の各文字のリテラル値が保持されます。前にバックスラッシュがある場合でも、一重引用符の間に一重引用符を使用することはできません。
文字を二重引用符で囲むと、履歴拡張が有効になっている場合は、$、バックティック、\、!を除く引用符内のすべての文字のリテラル値が保持されます。 $とバックティック文字は二重引用符内で特別な意味を維持します。バックスラッシュは、後に$、 `、 "、\、または改行文字のいずれかが続くときにのみ特別な意味を保持します。二重引用符の前にバックスラッシュを付けて二重引用符の中に入れることができます。エスケープにバックスラッシュを使用しない限り、この場合は前のバックスラッシュは削除されません。
したがって、あなたの例では次のようになります。
#!/bin/bash
PLACE="World"
echo "Hello $PLACE !"
echo 'Hello $PLACE !'
次の出力が生成されます。
Hello World !
Hello $PLACE !