Ubuntu bash脚本字符串包含类似的单词

时间:2017-04-27 13:13:29

标签: bash ubuntu

我正在尝试编写一个bash脚本来判断两个字符串是否具有相似的值。我制作了这个bash脚本:

#!/bin/bash
value="java.lang.NullPointerException"
if [[ "java.lang.NullPointerException" = "$value" || "java.lang.NullPointerException" == "$value"* ]]; then
   echo "Match"
fi

基本上我想要的是,如果两个字符串具有相同的值或非常相似,但在中间有匹配的文本,则回显“匹配”。

我尝试了很多资源,但无法让这个例子起作用。我看了看:

  1. In bash, how can I check if a string begins with some value?
  2. How to test that a variable starts with a string in bash?
  3. https://ubuntuforums.org/showthread.php?t=1118003
  4. 请注意,这些值最终会来自文本文件,因此值将采用变量形式。我尝试了不同的方法,但似乎没有让它工作。我只是想让这个if语句起作用。它适用于匹配文本,但不适用于任何一方的值。值可能是“java.lang.NullPointerException:Unexpected”或“Unexpected java.lang.NullPointerException”。

2 个答案:

答案 0 :(得分:0)

#!/bin/bash
value="java.lang.NullPointerException" #or java.lang.NullPointerException: Unexpected
if [[ $value == *"java.lang.NullPointerException"* ]]; 
then
   echo "Match"
fi

答案 1 :(得分:0)

用于通配符匹配的简单且可移植(POSIX兼容)技术是使用case语句而不是if。对于您的示例,这看起来像

#!/bin/sh
value="java.lang.NullPointerException"
case "$value" in
*java.lang.NullPointerException*) echo Match;;
esac