2017-04-27 1 views
0

私は2つの文字列が同じ値であるかどうかを示すbashスクリプトを書こうとしています。Ubuntuのbashスクリプトの文字列に似たような言葉が含まれています

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

基本的に私はachiveたいもの、2つの文字列が等しい値または非常に類似した側のいずれかでなく、途中でテキストを一致しているならば、「マッチ」をエコーということです:私はこのbashスクリプトを生成しています。

私は数多くのリソースを試しましたが、この例を動作させることはできません。これらの値は、最終的にテキストファイルから来る注意などの値は、変数の形になりますしてください

  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

:私は見てとっています。私はさまざまなアプローチを試みましたが、それを働かせるようには思われません。私はちょうどこのif文が機能するようにしたい。これは、テキストを一致させるためには機能しますが、いずれの側にも値はありません値は "java.lang.NullPointerException:Unexpected"または "予期しないjava.lang.NullPointerException"である可能性があります。

+0

オペランドの順序が間違っています: 'in =" test this "; [["$ in" = "test" *]] && echo ok'はうまく動作します(追加の '='テストは必要ありません)。これはパターンとして '*' – Aaron

+0

ありがとうと使用されなければならない最短の値です。それはうまくいった。 –

+0

大歓迎です!私はあなたの質問を今解決されたとして削除することをお勧めし、ちょうどリンクされた質問への回答の誤った実装についてでした。 – Aaron

答えて

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

これは質問に対する答えかもしれませんが、尋ねられた人はそれを軽蔑するかもしれませんが、あなたがしたことについていくつかの説明を加えることができればうれしいでしょう。 。 – derM

+0

@derMワンライナーです! [Bashマニュアル](http://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#index-_005b_005b)の[Stackexchange](http ://stackoverflow.com/questions/669452/is-preferable-over-in-bash-scripts)または[Bash FAQ](http://mywiki.wooledge.org/BashFAQ/031)を参照してください。 – ceving

+1

@der: 's /軽蔑/コンテンツ/'! –

0

ワイルドカードのマッチングのためのシンプルかつポータブル(POSIX準拠)技術がifではなくcaseステートメントを使用することです。たとえば、これは次のようになります

#!/bin/sh 
value="java.lang.NullPointerException" 
case "$value" in 
*java.lang.NullPointerException*) echo Match;; 
esac 
関連する問題