【发布时间】:2015-04-21 00:17:46
【问题描述】:
我正在尝试在查询日志文件的 bash 脚本中创建一个函数。在查询函数中,我有类似以下内容:
if [ -n "$(cat some-log-file.log | grep \"$1\")" ]; then
echo "There is a match."
else
echo "No lines matched the search term."
fi
如果我发送一些我知道会在日志文件中作为 $1 的内容,例如“我不发送”,我会得到输出:
$ ./y.sh 查询“我没有”
grep: don't": 没有这样的文件或目录
没有与搜索词匹配的行。
如果我尝试单引号 $() 表达式,它会发送文字字符串并始终评估为真。我猜这与 grep 解释反斜杠的方式有关,但我无法弄清楚。也许我正在监督一些简单的事情,但我已经在论坛上查看了几个小时并插入了各种奇怪的引号和转义字符组合。感谢您提供任何帮助或建议。
【问题讨论】:
标签: regex linux bash shell grep