使用选项 -c 在 shell 脚本中打印单引号 [重复]

Posted

技术标签:

【中文标题】使用选项 -c 在 shell 脚本中打印单引号 [重复]【英文标题】:Print single quotes in shell script using option -c [duplicate] 【发布时间】:2018-05-08 11:05:44 【问题描述】:

这听起来可能很新手,但我尽一切努力让它发挥作用。 我想用单引号打印一个单词: 'John' 在 shell 脚本中。我无法替换/bin/bash -l -c,因为这部分代码是由Java 运行的,我必须将shell 命令作为字符串传递。我也尝试了echo -e 选项。

/bin/bash -l -c 'echo "'John'"'

我想要的输出是:

'John'

我尝试转义单引号,但到目前为止没有任何帮助。有什么想法吗?

【问题讨论】:

【参考方案1】:

你不能在bash中嵌套单引号,所以该行被解释为

/bin/bash -l -c 'echo "'John'"'
                |......| ---------- single quoted
                       |....| ----- not quoted
                            |.| --- quoted

所以,正确地转义单引号:

/bin/bash -c 'echo "'\''John'\''"'

或者,如果单引号中的字符串真的很简单,

/bin/bash -c 'echo "'\'John\''"'

【讨论】:

【参考方案2】:

尝试删除双引号并转义单引号:

/bin/bash -l -c "echo \'John\'"

【讨论】:

【参考方案3】:

一种常见的解决方法是使用printf,这样您就不需要在格式字符串中使用文字单引号。

bash -l -c 'printf "\x27John\x27\n"'

(在此处使用 bash -l 可能会被误导且不可移植。)

【讨论】:

以上是关于使用选项 -c 在 shell 脚本中打印单引号 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sed 在 shell 脚本中添加单引号

shell脚本中单双引号疑惑

shell脚本中单引号和双引号的区别

shell脚本中 的 单引号和反引号经常混淆,请高手帮我区别它们的功能,谢谢

shell 脚本中双引号 单引号 反引号 的区别

shell脚本单双引号问题描述