2017-04-27 3 views
0

Ich versuche, ein Bash-Skript zu schreiben, die zeigen wird, ob zwei Strings von ähnlichem Wert sind. Ich habe diese Bash-Skript erzeugt:Ubuntu Bash Script String enthält ähnliche Wörter

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

Im Grunde, was ich achive will, ist, dass, wenn zwei Strings gleichwertig sind oder eine sehr ähnlichen beiden Seiten aber mit Text in der Mitte passenden dann „Match“ echo.

Ich habe eine Reihe von Ressourcen ausprobiert, aber dieses Beispiel funktioniert nicht.

  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

Bitte beachten Sie diese Werte aus einer Textdatei würde schließlich kommen und so werden die Werte in Form von Variablen sein: Ich habe einen Blick auf genommen . Ich habe verschiedene Ansätze ausprobiert, aber es scheint nicht zu funktionieren. Ich möchte nur, wenn diese Anweisung funktioniert. Es funktioniert für übereinstimmenden Text, aber nicht für Werte auf beiden Seiten. Der Wert könnte "java.lang.NullPointerException: Unexpected" oder "Unexpected java.lang.NullPointerException" sein.

+0

Sie haben Ihre Operanden Bestellung falsch: 'in =" testen Sie dies "; [["$ in" = "test" *]] && echo ok' funktioniert gut (und benötigt keinen zusätzlichen '=' test); es ist der kürzeste Wert, der als Muster mit einem '*' – Aaron

+0

Dank verwendet werden muss. Das hat funktioniert. –

+0

Gern geschehen! Ich schlage vor, dass Sie Ihre Frage löschen, da sie jetzt gelöst ist und nur eine falsche Umsetzung der Antworten auf die Fragen war, die Sie verlinkt haben. – Aaron

Antwort

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

Während dies die Antwort auf die Frage sein könnte, und der, der fragte, könnte Verachtung damit sein, wäre es nett, wenn Sie eine Erklärung hinzufügen könnten, was Sie getan haben, so hilft es auch weiteren Lesern, die über diese Frage stolpern können . – derM

+0

@derM Es ist ein One-Liner! Es sollte ziemlich einfach sein, die Erklärung im [Bash-Handbuch] (http://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#index-_005b_005b) auf [Stackexchange] (http: // www : //stackoverflow.com/questions/669452/is-preferable-over-in-bash-scripts) oder in der [Bash FAQ] (http://mywiki.wooledge.org/BashFAQ/031). – ceving

+1

@der: 's/verachtung/content /'! –

0

Eine einfache und portable (POSIX-konform) Technik für die Wildcard-Matching ist eher eine case Aussage zu verwenden, als if. Für Ihr Beispiel würde das etwa so aussehen:

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