引用bash脚本

时间:2017-02-08 21:09:10

标签: bash quoting

我正在尝试运行以下命令

echo `grep -o "<\/div><div class\=\".*" $1` |
grep -o "title=\\"\(.*\?\)\\" aria-describedby" -> title.txt
来自脚本test.sh

但是,每次检查我的文件title.txt时,它都是空的。

我测试了命令的第一部分,

echo `grep -o "<\/div><div class\=\".*" $1`

它工作正常。

第二部分是问题“

grep -o "title=\\\"\(.*\?\)\\\" aria-describedby" -> title.txt

请记住,这不是从终端本身运行,而是从终端调用bash脚本文件。

我认为我的问题在于我如何引用或转发引号。

1 个答案:

答案 0 :(得分:0)

我不知道你的表达式是否符合你的要求,但是这个表达式存在问题:

"title=\\"\(.*\?\)\\"

当shell看到连续的反斜杠(基本上是一个转义反斜杠)时,它会将它们读作一个字面反斜杠。表达式中的第一个双反斜杠是这样读的,后面的双引号结束了字符串。换句话说,以下是一个字符串:

"title=\\"

其余部分:

\(.*\?\)\\"

以双引号结束(由于双反斜杠成为一个字面反斜杠而没有再次转义),但没有初始双引号。