Bash反斜杠转义以下任何字符:
$ echo "Result: \e"
Result:
$ echo "Result: \\"
Result: \然而,Bash反斜杠似乎有一个两级转义系统:
$ echo "Result: \\e"
Result:如果我正确理解它,在前面的示例中,第一个反斜杠转义第二个反斜杠,这将导致反斜杠。这个反斜杠将转义下一个字符e。
如果e被转义,为什么最后一个"没有转义?我希望下面的内容可以转义,但结果是一个简单的转义:
$ echo "Result: \\"
Result: \这种选择性的两级转义是如何表现的,是什么触发了它?
发布于 2019-07-21 22:40:54
您提到的转义字符\e对应于键盘"Esc“键,而不是反斜杠转义。要获得"Esc“键字符,必须使用:
echo $'\e'您将得到UTF-8char0x001b,它是"Esc“密钥代码(UTF-8)。
通过运行man bash检查Bash的手册页,然后通过键入以下命令搜索"\e“:
/\\e/用于查找,\\e用于转义\并获取\e。
在Bash中,反斜杠的意思是“文字”。下面是我在GNU/Linux中使用bash4.4.20获得的一些评论结果。
$ echo "Result: e"
Result: e
$ echo "Result: \e"
Result: \e我对这个结果有疑问(*)。
$ echo "Result: \\e"
Result: \e在这里,我们说:一个文字\和e。这是它打印的。
$ echo "Result: \\\e"
Result: \\e这里我们说:文字\和转义字符。
$ echo "Result: \\\\e"
Result: \\e两个字面上的\。
$ echo "Result: \\\\\e"
Result: \\\e两个文字\‘和一个转义字符。
$ echo "Result: \\\\\\e"
Result: \\\e诸若此类。
在echo中,\e不作为转义字符工作,您必须使用\。
(*)这个结果可能与echo $"\e"相对应。根据手册页:
一个带美元符号的双引号字符串($" string ")将导致字符串根据当前区域设置进行转换。
在巴什我得到:
$ echo $"\e"
\ehttps://stackoverflow.com/questions/49084755
复制相似问题