Bashでは、一重引用符(''
)と二重引用符(""
)の違いは何ですか?Bashの一重引用符と二重引用符の違い
答えて
一重引用符では何も挿入されませんが、二重引用符(たとえば、変数、バッククォート、特定の\
エスケープなど)が挿入されます。単一引用符で
囲み文字(
'
)引用符内の各文字のリテラル値を保持します:例
[email protected]:~# echo "$(echo "upg")" upg [email protected]:~# echo '$(echo "upg")' $(echo "upg")
バッシュマニュアルは、これは言っています。たとえバックスラッシュが前に置かれていても、一重引用符間に一重引用符はできません。
二重引用符で文字を囲むと(
"
)$
、`
、\
を除いて、全ての文字のリテラル値を保持し、かつ、履歴展開が有効になっている場合、!
。$
と`
の文字は、特別な意味を二重引用符で囲んでいます(Shell Expansions参照)。バックスラッシュには、$
,`
,"
,\
または改行のいずれかの文字が続く場合にのみ、その特殊な意味が保持されます。二重引用符の中で、これらの文字の1つが後に続くバックスラッシュは削除されます。特別な意味を持たない文字に先行するバックスラッシュは変更されません。二重引用符は、二重引用符の前にバックスラッシュを付けて引用することができます。有効にすると、二重引用符で囲まれた!
がバックスラッシュを使用してエスケープされない限り、履歴拡張が実行されます。!
より前のバックスラッシュは削除されません。特別なパラメータ
*
および@
は、二重引用符(Shell Parameter Expansionを参照)の場合に特別な意味を持ちます。二重引用符は、それらと出力の間に変数の値を、変数を評価する一方
あなたが何かをエコーときに何が起こるかを参照している場合は、単一引用符は、あなたがそれらの間で持っているものエコー文字通ります。例えば
、この
#!/bin/sh
MYVAR=sometext
echo "double quotes gives you $MYVAR"
echo 'single quotes gives you $MYVAR'
はこれを与える:
double quotes gives you sometext
single quotes gives you $MYVAR
accepted answerは素晴らしいです。私は、トピックの迅速な理解に役立つテーブルを作っています。説明には、単純な変数a
とインデックス付き配列arr
が含まれています。
我々は2列目の式
a=apple # a simple variable
arr=(apple) # an array with a single element
、その後echo
を設定した場合、我々は、3列目に示す結果/動作になるだろう。 4列目はその動作を説明しています。
# | Expression | Result | Comments
---+-------------+-------------+--------------------------------------------------------------------
1 | "$a" | apple | variables are expanded inside ""
2 | '$a' | $a | variables are not expanded inside ''
3 | "'$a'" | 'apple' | '' has no special meaning inside ""
4 | '"$a"' | "$a" | "" is treated literally inside ''
5 | '\'' | **invalid** | can not escape a ' within ''; use "'" or $'\'' (ANSI-C quoting)
6 | "red$arocks"| red | $arocks does not expand $a; use ${a}rocks to preserve $a
7 | "redapple$" | redapple$ | $ followed by no variable name evaluates to $
8 | '\"' | \" | \ has no special meaning inside ''
9 | "\'" | ' | \' is interpreted inside ""
10 | "\"" | " | \" is interpreted inside ""
11 | "*" | * | glob does not work inside "" or ''
12 | "\t\n" | \t\n | \t and \n have no special meaning inside "" or ''; use ANSI-C quoting
13 | "`echo hi`" | hi | `` and $() are evaluated inside ""
14 | '`echo hi`' | `echo hi` | `` and $() are not evaluated inside ''
15 | '${arr[0]}' | ${arr[0]} | array access not possible inside ''
16 | "${arr[0]}" | apple | array access works inside ""
17 | $'$a\'' | $a' | single quotes can be escaped inside ANSI-C quoting
18 | '!cmd' | !cmd | history expansion character '!' is ignored inside single quotes
19 | "!cmd" | cmd args | expands to the most recent command matching "cmd"
---+-------------+-------------+--------------------------------------------------------------------
を参照:表は[StackOverflowの](https://stackoverflow.com)上の多くの質問への答えである
- 1. ASP.NET 4の '(一重引用符)と "(二重引用符)の相違点
- 2. Django json一重引用符と二重引用符?
- 3. javascriptの一重引用符または二重引用符
- 4. Node.jsの一重引用符または二重引用符?
- 5. 二重引用符で囲んだ一重引用符
- 6. javascriptの二重引用符と一重引用符のあいまいさ
- 7. 一重引用符と二重引用符の重要性は何ですか?
- 8. Juliaの単一引用符と二重引用符
- 9. 単一引用符と二重引用符の交換
- 10. 二重引用符
- 11. 二重引用符で囲んだ二重引用符
- 12. javascriptの一重引用符と二重引用符の比較 - 厳密な型
- 13. ASP.NET:リテラルのテキストプロパティ内の一重引用符と二重引用符
- 14. XSLTフォーム入力値属性の一重引用符と二重引用符?
- 15. append() - fullcalendar外部イベントのJavaScript一重引用符と二重引用符
- 16. awkと二重引用符
- 17. mysqlimportと二重引用符
- 18. 二重引用符と一重引用符を使用する場合mysql
- 19. PHPで二重引用符と一重引用符を使用する方法
- 20. Pythonでの二重引用符と引用符の使用の違い
- 21. 一重引用符をリストの二重引用符に置き換えたい
- 22. 一重引用符、二重引用符、三重引用符を含むLex文字列
- 23. PHPの二重引用符
- 24. jQuery:一重引用符と二重引用符をバックスラッシュでエスケープする方法
- 25. 一重引用符と二重引用符を正しくエスケープする方法
- 26. PHPは一重引用符と二重引用符でエコーします
- 27. 一重引用符と二重引用符を含むJSON.parse文字列
- 28. msbuild - sedコマンドエラー - 一重引用符と二重引用符を含める方法
- 29. JavascriptとRemotipart - 一重引用符と二重引用符の違いは何ですか?
- 30. ClojureScriptの一重引用符と二重引用符の違いは何ですか?
。 – C0deDaedalus
受け入れられた答えは、最後に '二重引用符で囲まれたときに特殊なパラメータ*と@は特別な意味を持っています。' '*"の結果はどのように '*'になりますか? –