这可能听起来像新手,但我尝试了一切来使这个工作。
我想在shell脚本中用单引号打印一个单词:'John'。我无法替换/bin/bash -l -c
,因为这部分代码是由Java运行的,我必须将shell命令作为字符串传递。我也尝试使用echo -e
选项。
/bin/bash -l -c 'echo "'John'"'
我想要的输出是:
'John'
我试图逃避单引号但到目前为止没有任何帮助。有什么想法吗?
答案 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
可能是错误的和不可移植的。)