我想这样在Bash中显示一个字符串
I'm a student
当然可以这样
echo "I'm a student"
但是如何在字符串周围使用单引号的同时完成此操作?
Answers:
echo 'I\'m a student'
不起作用。但是以下工作原理:
echo $'I\'m a student'
在bash的手册页中:
即使在单引号之前加反斜杠,也不能在单引号之间引起单引号。
.... $'string'
形式的单词经过特殊处理。该单词扩展为字符串,并按ANSI C标准的规定替换反斜杠转义字符。
echo $'I\'m a student!'
=> !': event not found
,这不是真正的单引号字符串,以bash表示,应防止任何解释。
$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15) Copyright (C) 2007 Free Software Foundation, Inc.
实际上,格伦·杰克曼(Glenn Jackman)提到的“丑陋”解决方案应该被列为顶级答案。它运作良好,在某些情况下实际上很漂亮。
'I'"'"'m a student'
这会在单引号字符串结束I
后,立即启动包含单引号的双引号字符串,然后再启动另一个单引号字符串。然后Bash将所有连续的字符串连接为一个。
美丽!
$
不一定具有“ + n”的能力。我不确定是否需要测试更多。但是在我看来,这样我可以执行已经用单引号存储在单独变量中的代码。
下面的示例有效,因为\'
技术上转义的单引号位于两个单引号参数之间
echo 'I'\''m a student'
3.1.2.2 Single Quotes