shell中$後加引號有什麼用($“string”和$'string')

來源:互聯網
上載者:User

shell中$後加引號有什麼用($“string”和$'string')

有些時候在某些服務管理指令碼中看到$"$string",經過一些測試,發現引號外面的$有和沒有是一樣的。剛才翻了下man bash,找到瞭解釋。

(1).如果沒有特殊定製bash環境或有特殊需求,$"string"和"string"是完全等價的,使用$""只是為了保證本地化。

以下是man bash關於$""的解釋:

      A  double-quoted  string  preceded by a dollar sign ($"string") will cause the string to be translated according to the current locale.  If
      the current locale is C or POSIX, the dollar sign is ignored.  If the string is translated and replaced, the replacement is double-quoted.

(2).還有$後接單引號的$'string',這在bash中被特殊對待:會將某些反斜線序列(如\n,\t,\",\'等)繼續轉義,而不認為它是字面符號(如果沒有$符號,單引號會強制將string翻譯為字面符號,包括反斜線)。簡單的例子:

[root@bkjia ~]# echo 'a\nb'
a\nb
[root@bkjia ~]# echo $'a\nb'
a
b

以下是man bash裡關於$'的說明:

Words of the form $'string' are treated specially.  The word expands to string, with backslash-escaped characters replaced as specified  by  the ANSI C standard.  Backslash escape sequences, if present, are decoded as follows:
              \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)
              \uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
              \UHHHHHHHH
                    the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)
              \cx    a control-x character

本文永久更新連結地址:https://www.bkjia.com/Linux/2018-02/151002.htm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.