欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/7/14 编程问答 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 shell中$后加引号有什么用($string和$'string') 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html


有些时候在某些服务管理脚本中看到$"$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. Ifthe 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@xuexi ~]# echo 'a\nb' a\nb [root@xuexi ~]# 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)\UHHHHHHHHthe Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)\cx a control-x character

总结

以上是生活随笔为你收集整理的shell中$后加引号有什么用($string和$'string')的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。