2013-02-27 29 views
5

Aşağıdaki gibi bir değişkenim var.Bir bash kabuk betiği değişkeninde bir alt dizenin bulunması

variable = This script is not found 

if [[ "$variable" = ~ "not found" ]]; 
then 
echo "Not Found" 
else 
echo "Its there" 
if 

err altına alma im yürütülürken,

line 4: syntax error in conditional expression 
./test.sh: line 4: syntax error near `found"' 
./test.sh: line 4: `if [[ "$variable" = ~ "not found" ]]; ' 

kimse bana gelin, burada ne eksik im?

variable="This script is not found" # <-- 

if [[ "$variable" =~ "not found" ]] # <-- 
then 
    echo "Not Found" 
else 
    echo "Its there" 
fi # <-- 

Şunları yapabilirsiniz:;

+2

olmamalıdır bir boşluk içinde aynı sonucu dönüş kodları altında çalıştık. '= ~' –

+0

olarak yazın Daha önce bunu denediniz. Ama başka bir satır 4 var: koşullu ikili operatör bekleniyor. /test.sh: satır 4: '= ~ 'yakınında sözdizimi hatası. /test.sh: satır 4:' [["$ variable" = ~ "bulunamadı" ]]; ' – Boby

+1

Eğer öykünüzü üst üste değiştirdiyseniz ne olur' variable = "Bu betik bulunamadı" '? İyi şanslar. – shellter

cevap

13
LIST="some string with a substring you want to match" 
SOURCE="substring" 

if echo "$LIST" | grep -q "$SOURCE"; then 
    echo "matched"; 
else 
    echo "no match"; 
fi 

Good Luck) burada

2

açıklamada

if [[ "$variable" =~ "not found" ]]; then 
     echo "Not Found"; 
else 
     echo "Its there"; 
fi 
7

belirtilen noktalarda sürümü ile karşılaştırın senin eğer bir doğru yapıdır Bir ödevi boşluğa koymayın = ve boşluk içeren bir dize değişmezi belirtmeniz gerekir. İzlemeye ihtiyacınız yok; eğer kendi hattına koyacaksan. Ve eğer bir "eğer" sonra "if" ile biter.

0

hep ya `=` ve '~' arasında doğru veya yanlış

if [[ "$variable" =~ "not found" ]]; then 
     echo "Not Found"; 
else 
     echo "Its there"; 
fi 
İlgili konular