SORU
13 Mayıs 2010, PERŞEMBE


Nasıl bir dize Unıx kabuk bir komut dizesi içeriyorsa anlatır mısın?

Eğer başka bir dize içinde bir dize ise, çeşitli mantık yapacak Unıx kabuk komut dosyası yazmak istiyorum. Eğer belli bir klasör içinde ben, örneğin, kapalı şube. Birisi bunu nasıl söyler? Mümkünse bu kabuk özel yapmak istiyorum (yani sadece bash değil) ama eğer başka bir yolu varsa hayır bunu yaptırabilirim.

#!/bin/sh
CURRENT_DIR=`pwd`

if [ CURRENT_DIR contains "String1" ]
then
 echo "String1 present"
elif [ CURRENT_DIR contains "String2" ]
then
 echo "String2 present"
else
 echo "Else"
fi

CEVAP
10 Ocak 2012, Salı


Burada başka bir çözüm. Bu bash, dash, ksh içinde çalışır POSIX substring parameter expansion,... kullanır

test "${string#*$word}" != "$string" && echo "$word found in $string"

Edit: Bu harika bir fikir, C. Ross. İşte bazı örnekler ile fonksiyonelleştirilmiş bir versiyonu:

# contains(string, substring)
#
# Returns 0 if the specified string contains the specified substring,
# otherwise returns 1.
contains() {
    string="$1"
    substring="$2"
    if test "${string#*$substring}" != "$string"
    then
        return 0    # $substring is in $string
    else
        return 1    # $substring is not in $string
    fi
}

contains "abcd" "e" || echo "abcd does not contain e"
contains "abcd" "ab" && echo "abcd contains ab"
contains "abcd" "bc" && echo "abcd contains bc"
contains "abcd" "cd" && echo "abcd contains cd"
contains "abcd" "abcd" && echo "abcd contains abcd"
contains "" "" && echo "empty string contains empty string"
contains "a" "" && echo "a contains empty string"
contains "" "a" || echo "empty string does not contain a"
contains "abcd efgh" "cd ef" && echo "abcd efgh contains cd ef"
contains "abcd efgh" " " && echo "abcd efgh contains a space"

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010
  • VideoGamePervert

    VideoGamePer

    30 AĞUSTOS 2008