是否有任何bash脚本可以通过grep命令向我返回result = true?
示例:我的CF日志中有1000条103.12.88记录。 如果检测到1个或多个结果,我可以做grep 103.12.88,然后打印/输出结果显示是YES还是True
答案 0 :(得分:2)
此问题的实际答案是在命令末尾添加|| true
,例如:
echo thing | grep x || true
这仍将输出0返回码。
答案 1 :(得分:0)
您正在错误地处理返回值。
value=$( grep -ic "210.64.203" /var/logs )
将value
设置为grep的输出,而不是其返回代码。
执行命令后,退出代码存储在$?
中,但是通常不需要。
if grep -ic "210.64.203" /var/logs
then echo "Found..."
else echo "not found"
fi
如果需要该值,请测试内容。
rec="$( grep -ic "210.64.203" /var/logs )"
if [ -n "$rec" ] ; then echo found; fi
或者如果使用bash
,
if [[ "$rec" ]] ; then echo found; fi
尽管我更希望露骨-
if [[ -n "$rec" ]] ; then echo found; fi
答案 2 :(得分:0)
如果您想在 grep 上成功返回而不找到匹配项,则取反其输出会更容易:
echo "Hello, World" | not grep -q "Friend" && echo "No match"
由于在输出中未找到“朋友”,因此将打印No match
。
echo "Hello, World" | not grep -q "Hello" && echo "No match"
由于在输出中找到了朋友 ,因此此命令不会打印任何内容。
请注意,我们正在使用标志-q
(与--quiet
一样),因此grep不会写入输出,但是如果找到匹配项,则会以状态0退出。