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

  • Floortile83

    Floortile83

    16 Ocak 2010
  • Michelle Phan

    Michelle Pha

    18 Temmuz 2006
  • SDSARG3

    SDSARG3

    14 Mart 2009