我正在尝试编写一个 shell 脚本,它将 grep 查找应该从文件中排除的关键字,如果它从排除的关键字中找到其他内容,它应该执行特定的命令。
logcheck=`grep -vq 'accepting\|idle.' /tmp/lpstat-Final.log`
if [[ $logcheck == 'accepting\|idle.' ]] ; then
status=0
statustxt=OK
else
echo "Something found"
fi
除了“接受\|空闲”之外,结果应该是“如果有的话”。发现它应该转到 else 语句,否则存在状态将为 0
答案1
if ! grep -Evq 'accepting|idle' /tmp/lpstat-Final.log; then
status=0
statustxt=OK
else
echo 'Something found'
fi
这里最重要的是,grep
如果您使用 则不会产生任何输出-q
。这意味着使用命令替换将不会捕获任何内容($logcheck
在您的代码中将为空)。相反,我们使用实用程序的退出状态来确定是否找到了某些内容。
我-E
在这里使用是为了使正则表达式更漂亮;它也需要用于替换(\|
基本正则表达式中的替换是一个扩展,由例如 GNU 支持grep
)。