bash中,$'string' 这种引用方式是在man page的QUOTING这一节里进行说明的。
这种引用方式,会把含义转义字符(\n \t \nnn \xHH等)的string展开成一个字符串。
展开后的字符串是被单引号括起的。
下面是一些例子
-
# 想要输出a换行b,要把转义字符括起来,并且使用echo -e才行。而直接echo $'a\nb'就可以。
-
$ echo a\nb
anb
$ echo 'a\nb'
a\nb
$ echo -e 'a\nb'
a
b
$ echo $'a\nb'
a
b
# 把$'a\nb'存入变量后,echo时需要用双引号括起变量才可以。
$ X=$'a\nb'
$ echo $X
a b
$ echo "$X"
a
b
# 当使用命令替换把命令的输出存入变量时,就是以$'string'这种形式保存的。
-
$ Y=`free -m`
$ set|grep ^Y
Y=$' total used free shared buffers cached\nMem: 15952 15642 310 0 131 3553\n-/+ buffers/cache: 11957 3995\nSwap: 8091 689 7402'
# 用双引号括起再echo,就能恢复出命令的执行结果。
$ echo "$Y"
total used free shared buffers cached
Mem: 15952 15641 311 0 131 3553
-/+ buffers/cache: 11957 3995
Swap: 8091 689 7402
另外,还有一种$"string"的引用方式,会把string翻译成
当前locale。(什么意思??)
阅读(1592) | 评论(0) | 转发(0) |