将grep存储在值中时的额外反斜杠

时间:2015-06-23 14:55:58

标签: linux bash

在bash脚本中我有:

if/else if

当你运行它时,它显示为:

Check="grep -e '"'\(-S mount\)'"' /etc/audit/audit.rules"
set -x

现在它正是我想要的,但我想了解它。为什么还有2个额外的?

1 个答案:

答案 0 :(得分:2)

set -x的输出使用单引号。因此外部双引号被单引号替换,但是你不能在单引号字符串中转义单引号,所以当它替换它所需的内部双引号时,替换它们用'\''替换它们结束单引号字符串,然后有一个转义的单引号,然后启动下一个单引号字符串。

另外,另外,不要将命令存储在字符串中。它只会让你以后痛苦。有关详情,请参阅Bash FAQ 050