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

时间:2017-11-24 12:16:54

标签: linux bash shell unix echo

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

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

我想要的输出是:

'John'

我试图逃避单引号但到目前为止没有任何帮助。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您不能在bash中嵌套单引号,因此该行被解释为

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

所以,正确地逃避单引号:

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

或者,如果单引号中的字符串非常简单,

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

(在这里使用bash -l可能是错误的和不可移植的。)