2015-05-31 27 views
36

Ich habe eine Zeichenfolge ${testmystring} in meinem .sh Skript und ich möchte überprüfen, ob diese Zeichenfolge keine andere Zeichenfolge enthält.Bash überprüft, ob Zeichenfolge enthält keine andere Zeichenfolge

if [[ ${testmystring} doesNotContain *"c0"* ]];then 
     # testmystring does not contain c0 
    fi 

Wie kann ich das tun, d. H. Was soll do notContain sein?

+0

'&& echo testmystring enthält keine c0 ' – Jahid

+1

möglich duplicate von [String enthält in bash] (http://stackoverflow.com/questions/229551/string-contains-in-bash) –

+0

Es ist ein * inversed * Duplikat: lies [diese Antwort] (http: // stackoverflow.com/a/20460402/1765658) und benutze 'else' oder * not * wie in:' if! stringContain "c0" "$ myteststring"; dann .... ' –

Antwort

50

Verwenden Sie !=.

if [[ ${testmystring} != *"c0"* ]];then 
    # testmystring does not contain c0 
fi 

Weitere Informationen finden Sie unter help [[.

+1

Die' {} 'und die Anführungszeichen um' c0' sind überflüssig. – cdarke

+4

Ich stimme zu, dass sie für das oben gezeigte Beispiel überflüssig sind. Wenn jedoch der Variablenname und die Musterzeichenfolge komplexer werden (z. B. Platz in der Musterzeichenfolge enthalten), müssen sie zitiert werden. Jedenfalls schadet es nicht, sie zu zitieren. :) – cychoi

+1

Wahr, es tut nicht schaden, und wenn Sie gerne tippen sie dann klopfen Sie sich aus! Tut mir leid, ich weiß, das ist pedantisch, es ist nur so, dass ich finde, dass Leute oft Dinge wie "{}" auswendig verwenden, ohne zu verstehen, wann sie gebraucht werden und wann nicht (ich habe dich aufgezählt). – cdarke

6

Wie Mainframer sagte, können Sie grep verwenden, aber ich würde Exit-Status zum Testen verwenden, versuchen Sie dies: [! [$ Testmystring = * c0 *]]

#!/bin/bash 
# Test if anotherstring is contained in teststring 
teststring="put you string here" 
anotherstring="string" 

echo ${teststring} | grep --quiet "${anotherstring}" 
# Exit status 0 means anotherstring was found 
# Exit status 1 means anotherstring was not found 

if [ $? = 1 ] 
then 
    echo "$anotherstring was not found" 
fi 
+10

Sie verwenden eine Kanone, um eine Mücke zu töten – Jahid

+0

Jahid ist wahrscheinlich richtig, aber, wenn jemand auf diese Annäherung gebeugt wird, ist dieser oneliner kompakter: '' 'wenn Echo $ testring | grep -q $ anotherstring; dann echo "gefunden"; sonst Echo "nicht gefunden"; fi''' – JJC

Verwandte Themen