Shell

如何在shell中轉義引號?

  • May 5, 2021

我在 bash 中轉義字元時遇到問題。我想在不同使用者下執行命令時轉義單引號和雙引號。出於這個問題的目的,假設我想在螢幕上回顯以下內容:

'single quote phrase' "double quote phrase"

如果我還需要切換到其他使用者,如何轉義所有特殊字元:

sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\""

當然,這不會產生正確的結果。

您可以使用以下字元串文字語法:

> echo $'\'single quote phrase\' "double quote phrase"'
'single quote phrase' "double quote phrase"

man bash

$‘string’ 形式的單詞被特殊處理。該單詞擴展為字元串,並按照 ANSI C 標準的規定替換反斜杠轉義字元。反斜杠轉義序列(如果存在)按如下方式解碼:

          \a     alert (bell)
          \b     backspace
          \e
          \E     an escape character
          \f     form feed
          \n     new line
          \r     carriage return
          \t     horizontal tab
          \v     vertical tab
          \\     backslash
          \'     single quote
          \"     double quote
          \nnn   the eight-bit character whose value is the octal value nnn (one to three digits)
          \xHH   the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
          \cx    a control-x character

引用自:https://unix.stackexchange.com/questions/30903