2021-05-12 14:32:11
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@linuxidc ~]# echo 'anb'
anb
[root@linuxidc ~]# echo $'anb'
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.linuxidc.com/Linux/2018-02/151002.htm
相關文章