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

shell中$后加引号有什么用($“string”和$'string')

© 版权声明
THE END
点赞0
抢沙发
头像
提交
头像

昵称

取消
昵称
一言一语