为什么bash会插入额外的引号

时间:2015-01-28 16:37:58

标签: linux bash shell

我需要将一个包含单引号的表达式传递给一个命令,但是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等,但未能摆脱这些额外的引用。

1 个答案:

答案 0 :(得分:0)

您也可以尝试使用双引号,

echo "'EXPRESSION'"|more

输出将是,

'EXPRESSION'