GNU/Linux >> Linux の 問題 >  >> Linux

引用符を使用すると、なぜ単一の円記号が表示されるのですか?

二重引用符なしまたは二重引用符付きで使用する場合、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つが続く
円記号は削除されます。特別な意味のない
前の文字のバックスラッシュは変更されません。二重引用符は、その前に円記号を付けることにより、二重引用符内で
引用符で囲むことができます。
を有効にすると、「」でない限り、履歴の拡張が実行されます。 ’が
二重引用符で囲まれている場合は、円記号を使用してエスケープします。
」の前の円記号 ’は削除されません。

したがって、 \ 二重引用符で囲む場合は、 \とは異なる方法で処理されます。 一重引用符と\ 引用符の外側。文字を文字どおりに処理する位置にある場合を除いて、文字通りに処理されます。そうでない場合は、二重引用符で特別な意味を持つ可能性があります。

\'のようなシーケンスに注意してください 、 \? 、および \ * 'のため、文字通りに扱われ、円記号は削除されません。 、 および* 二重引用符で囲むと、すでに特別な意味はありません。


Linux
  1. 二重引用符はいつ必要ですか?

  2. Vlcを使用しているときに、スクリーンセーバーが起動し続けるのはなぜですか?

  3. 〜/ .profileを〜/.bash_profileに追加する理由

  1. bash / 標準の Linux コマンドのみを使用して、文字列内の一重引用符と二重引用符を削除する

  2. シェル変数を引用符で囲むのはいつですか?

  3. os.execlp を使用する場合、`python` が argv として `python` を必要とする理由 [0]

  1. C で tmpfile() を使用する場合の一時ファイルの場所

  2. screen を bash で使用すると、$LD_LIBRARY_PATH が設定解除されるのはなぜですか?

  3. sudo の使用時にコマンドが見つからない