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

  • audivila

    audivila

    5 HAZİRAN 2009
  • New Scientist

    New Scientis

    27 Kasım 2006
  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008