SORU
31 Ocak 2010, Pazar


Bash, nasıl eğer bir string değer ile başlıyorsa kontrol edebilir miyim?

Eğer bir dize ile başlar olmadığını kontrol etmek istiyorum"""". node001 örneğin düğüm Gibi bir şey

if [ $HOST == user* ]  
  then  
  echo yes  
fi

Nasıl doğru işlemciyi yapabilirim


GÜNCELLEME:

Çok teşekkür ederim! Ben daha fazla ifadeler eğer ANA ya da olup olmadığını kontrol etmek için birleştirmek gerekir "" ya başlar"" . düğüm Kullanıcı1

if [ [[ $HOST == user1 ]] -o [[ $HOST == node* ]] ];  
then  
echo yes 
fi

> > > -bash: [: too many arguments

Nasıl doğru yapmak?

CEVAP
31 Ocak 2010, Pazar


Bu diyor ki: Advanced Bash Scripting Guide üzerinde parçacık

# The == comparison operator behaves differently within a double-brackets
# test than within single brackets.

[[ $a == z* ]]   # True if $a starts with an "z" (wildcard matching).
[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).

Sen de vardıneredeysedoğru; sana ihtiyacım vardıçiftparantez, tek bir parantez değildir.


İkinci sorunuza gelince, bu şekilde yazabilirsiniz:

HOST=user1
if  [[ $HOST == user1 ]] || [[ $HOST == node* ]] ;
then
    echo yes1
fi

HOST=node001
if [[ $HOST == user1 ]] || [[ $HOST == node* ]] ;
then
    echo yes2
fi

Yankı olacak

yes1
yes2

Bash if sözdizimi sabit (IMO) alışmak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dylan Brenan

    Dylan Brenan

    22 Aralık 2009
  • Lena Danya

    Lena Danya

    11 NİSAN 2010
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012