我需要将一个包含单引号的表达式传递给一个命令,但是bash会插入一些额外的引号来破坏我的命令。作为一个非常简单的例子:
#!/bin/bash -x
echo 'EXPRESSION' | more
给出:
+ echo EXPRESSION
+ more
EXPRESSION
由于我想要显示单引号,我必须逃避它们:
#!/bin/bash -x
echo \'EXPRESSION\' | more
现在给了我:
+ echo ''\''EXPRESSION'\'''
+ more
'EXPRESSION'
所以在剧本中,我得到了这个奇怪的''\''EXPRESSION'\'''
这个东西。我将表达式管道化的命令是一个与文档管理系统交互的可执行文件,并期望一种特定格式 - 包括EXPRESSION
而不是''\''
和'\'''
周围的单引号。 / p>
有没有办法阻止bash添加额外的引号和反斜杠?我已经搞乱了字符串和eval
等,但未能摆脱这些额外的引用。
答案 0 :(得分:0)
您也可以尝试使用双引号,
echo "'EXPRESSION'"|more
输出将是,
'EXPRESSION'