二重引用符なしまたは二重引用符付きで使用する場合、bashはバックスラッシュを同じように扱うといつも思っていましたが、間違っていました:
[[email protected] ~]$ echo "foo \ "
foo \
[[email protected] ~]$ echo foo \ # Space after \
foo
したがって、二重引用符を使用する場合、バックスラッシュは常に印刷されると思いましたが、:
[[email protected] ~]$ echo "foo \" "
foo "
[[email protected] ~]$ echo "foo \\ "
foo \
最初のコード行にバックスラッシュが表示されているのはなぜですか?
承認された回答:
セクション3.1.2.3GNUBashマニュアルの二重引用符は次のように述べています:
バックスラッシュは、次の文字のいずれかが後に続く場合にのみ、その特別な意味を保持します:‘
$
’、‘`
’、‘"
’、‘\
’、またはnewline
。二重引用符で囲まれた場合、これらの文字の1つが続く
円記号は削除されます。特別な意味のない
前の文字のバックスラッシュは変更されません。二重引用符は、その前に円記号を付けることにより、二重引用符内で
引用符で囲むことができます。
を有効にすると、「!
」でない限り、履歴の拡張が実行されます。 ’が
二重引用符で囲まれている場合は、円記号を使用してエスケープします。
「!
」の前の円記号 ’は削除されません。
したがって、 \
二重引用符で囲む場合は、 \
とは異なる方法で処理されます。 一重引用符と\
引用符の外側。文字を文字どおりに処理する位置にある場合を除いて、文字通りに処理されます。そうでない場合は、二重引用符で特別な意味を持つ可能性があります。
\'
のようなシーケンスに注意してください 、 \?コード> 、および
\ *
'
のため、文字通りに扱われ、円記号は削除されません。 、?コード> および
*
二重引用符で囲むと、すでに特別な意味はありません。
Lum –出力をPrintfのフォーマットされた印刷のようにフォーマットする方法は?
実際のビデオをダウンロードせずに、Youtube-dlを使用してInfo-jsonファイルだけをダウンロードする方法は?