手机版
你好,游客 登录 注册
背景:
阅读新闻

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

[日期:2018-02-20] 来源:Linux社区  作者:f-ck-need-u [字体: ]

有些时候在某些服务管理脚本中看到$"$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 'a\nb'
a\nb
[root@linuxidc ~]# 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.linuxidc.com/Linux/2018-02/151002.htm

linux
相关资讯       shell 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款