我正在编写一个shell脚本,我正在尝试检查命令的输出是否包含某个字符串。我想我可能不得不使用grep,但我不确定如何。有谁知道吗?
答案 0 :(得分:128)
测试$?
是一种反模式
if ./somecommand | grep -q 'string'; then
echo "matched"
fi
答案 1 :(得分:54)
测试grep的返回值:
./somecommand | grep 'string' &> /dev/null
if [ $? == 0 ]; then
echo "matched"
fi
这样做是惯用的:
if ./somecommand | grep -q 'string'; then
echo "matched"
fi
还有:
./somecommand | grep -q 'string' && echo 'matched'
答案 2 :(得分:0)
另一种选择是在命令输出中检查正则表达式是否匹配。
例如:
[[ "$(./somecommand)" =~ "sub string" ]] && echo "Output includes 'sub string'"
答案 3 :(得分:0)
干净的if / else条件shell脚本:
if ./somecommand | grep -q 'some_string'; then
echo "exists"
else
echo "doesn't exist"
fi
答案 4 :(得分:0)
这看起来更明显,不是吗?
# Just a comment... Check if output of command is hahaha
MY_COMMAND_OUTPUT="$(echo hahaha)"
if [[ "$MY_COMMAND_OUTPUT" != "hahaha" ]]; then
echo "The command output is not hahaha"
exit 2
else
echo "The command output is hahaha"
fi