有没有一种方法可以检查Linux/Bash脚本中的子字符串是否在字符串中,并且在条件if语句中有一个可用的短行?

有没有一种方法可以检查Linux/Bash脚本中的子字符串是否在字符串中,并且在条件if语句中有一个可用的短行?,linux,bash,if-statement,Linux,Bash,If Statement,我正在使用 if[ "$wordCount" -gt 10 ] 检查一行中是否有超过10个单词,但如何同时检查一个特定的字符串,如“Brown Cow”是否也在该行中 因此,只有当该行的字数超过10并且在$line字符串中包含字符串“browncow”时,条件才应该起作用。在Linux/Bash中有没有这样做的方法?或者,我需要一个多行或不同的类似条件的case来完成它吗?使用grep,然后通过管道连接到while循环,我只需首先在循环中运行带有指定字符串的行,并使用相同的

我正在使用

if[ "$wordCount" -gt 10 ]
检查一行中是否有超过10个单词,但如何同时检查一个特定的字符串,如“Brown Cow”是否也在该行中


因此,只有当该行的字数超过10并且在$line字符串中包含字符串“browncow”时,条件才应该起作用。在Linux/Bash中有没有这样做的方法?或者,我需要一个多行或不同的类似条件的case来完成它吗?

使用grep,然后通过管道连接到while循环,我只需首先在循环中运行带有指定字符串的行,并使用相同的条件if语句,即可使它工作:

grep -n "Brown Cow" fileName | while read line;
do 
      lineNumber=$(echo $line | cut -d: -f1)
      lineText=${line#*;}
      wordCount=`echo $line | wc -w`
      if[ "$wordCount" -gt 10 ]
          Commands
done

我应该更新我的原始问题以显示更多的代码,还是这对于将来遇到类似问题的人来说已经足够了?

您可以在
中使用正则表达式或glob模式[[
expression。由于您要查找的字符串有空格,因此它需要位于变量中以补偿解析器的限制:

短语=“棕色奶牛” 如果[[$wordCount-gt 10&&$line=~$phrase]];那么 #成功 其他的 #失败 fi 或

#注意*表示通配符模式匹配
短语=“*棕色奶牛*”
如果[[$wordCount-gt 10&&$line=$phrase]];则
#成功
其他的
#失败
fi

这是否回答了您的问题?或者,对于子字符串测试:。您在哪里设置变量名
$line
?请更新您的Q以显示所有相关的代码和输入(数据/文件/字符串?)以及来自同一示例输入的所需输出。否则,我们将在注释中与您一起玩20个问题。祝您好运。