检查命令的输出是否包含shell脚本中的某个字符串

时间:2013-06-05 03:51:50

标签: bash shell grep

我正在编写一个shell脚本,我正在尝试检查命令的输出是否包含某个字符串。我想我可能不得不使用grep,但我不确定如何。有谁知道吗?

5 个答案:

答案 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