我正在尝试运行以下命令
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脚本文件。
我认为我的问题在于我如何引用或转发引号。
答案 0 :(得分:0)
我不知道你的表达式是否符合你的要求,但是这个表达式存在问题:
"title=\\"\(.*\?\)\\"
当shell看到连续的反斜杠(基本上是一个转义反斜杠)时,它会将它们读作一个字面反斜杠。表达式中的第一个双反斜杠是这样读的,后面的双引号结束了字符串。换句话说,以下是一个字符串:
"title=\\"
其余部分:
\(.*\?\)\\"
以双引号结束(由于双反斜杠成为一个字面反斜杠而没有再次转义),但没有初始双引号。