我想在Bash中以如下方式显示字符串
I'm a student
当然你可以像这样做。echo "I'm a student"
但是在使用单引号包围字符串的情况下如何实现此操作?
echo 'I\'m a student'
echo $'I\'m a student'
echo $'I\'m a student!'
=> !': 事件未找到
,这不是一个真正的单引号字符串,在bash中应该保护免受任何解释。 - regilerodash
和ash
(即/bin/sh
的常见别名)不支持$'
或Bash的ANSI-C引用,因为我相信它不符合POSIX标准。 - undefined'I'"'"'m a student'
I
后结束,然后立即开始一个包含单引号的双引号字符串,然后又开始了另一个单引号字符串。Bash 将所有连续的字符串连接成一个字符串。$
不一定具有“+n”的能力。我不确定,我需要进行更多的测试。但是对我来说,看起来像是我将能够执行已经存储在单引号中的代码,并将其存储到单独的变量中。 - tatsuecho I"'"m a student
? - wk_j\'
在技术上处于两个单引号参数之间。echo 'I'\''m a student'
另一种解决方法是使用printf
而不是echo
,并使用\x27转义所需的单引号:
printf 'I\x27m a student!\n'
我建议
echo "我是一名学生"
就像其他编程语言一样。
echo "我是学生"
,但如果要使用单引号将字符串括起来,该怎么实现呢? - Jeff Schaller
su -c '/etc/init.d/myservice start' -l myuser
(以root用户身份运行) - Sandburg