在 shell 脚本 if 块中使用 grep 和 wc

在 shell 脚本 if 块中使用 grep 和 wc

我正在尝试编写一个 shell 脚本来计算文件中字符串出现的次数,并根据它采取一些操作。

这是我的脚本:

#!/bin/sh
if [ grep "\s*oplocks\s=" sample.txt | wc -l = 5 ]
then
    echo "cnt equals 5"
else
    echo "cnt not 5"
fi

除此之外grep,我还想计算出现的次数,所以我正在使用wc -l.我怎样才能把这个放在if声明中?

感谢您的帮助!

答案1

使用命令替换$()-eq:算术比较:

if [ $(grep 'something' file | wc -l) -eq 5 ]
    then
       echo equal
    else
       echo not equal
fi

答案2

使用-cgrep 的参数并wc完全跳过。另外,您可以使用算术上下文来避免 -eq 等。

#!/bin/bash

if (( $(grep -c 'pattern' sample.txt) == 5 )); then
    echo "5 occurances"
fi

exit

相关内容