SORU
12 Temmuz 2010, PAZARTESİ


Ekle " nasıl Bash, emin [E/H]"ve herhangi bir komut veya bir diğer ad?

Bu durumda, Bash Onayla bir ekleme yapmak istiyorum

Are you sure? [Y/n]

Mercurial aslında bir takma ad olan hg push ssh://username@www.example.com//somepath/morepath,. Takma onu elde etmek için eklenebilir Standart bir komut var mı?

Nedeni hg push hg out benzer ses ve istediğim zaman bazen hgoutrepo, Ben accidentlly tipi hgpushrepo (her ikisi de takma ad).

Güncelleme:Eğer olabilir bir şey gibi yerleşik bir komut ile başka bir komut gibi: confirm & hg push ssh://... harika... sadece bir komut olabilir sormak için bir yes no ve devam ile geri kalanı ise yes.

CEVAP
12 Temmuz 2010, PAZARTESİ


Bu Hamish's answer daha kompakt ve çok yönlü formları vardır. Büyük ve küçük harflerin herhangi bir karışımdır kolu:

read -r -p "Are you sure? [y/N] " response
case $response in
    [yY][eE][sS]|[yY]) 
        do_something
        ;;
    *)
        do_something_else
        ;;
esac

Ya da, Bash ^ için . = 3.2 sürümü:

read -r -p "Are you sure? [y/N] " response
if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
then
    do_something
else
    do_something_else
fi

Ya Da, Bash 4.x:

read -r -p "Are you sure? [y/N] " response
response=${response,,}    # tolower
if [[ $response =~ ^(yes|y)$ ]]
...

Düzenleme:

Sizin yanıt olarak düzenlemek, burada ve benim cevabım (benzer şekilde diğer iki ile çalışmak istiyorsunuz) ilk sürümüne göre confirm bir komut oluşturmak kullanmak istiyorum:

confirm () {
    # call with a prompt string or use a default
    read -r -p "${1:-Are you sure? [y/N]} " response
    case $response in
        [yY][eE][sS]|[yY]) 
            true
            ;;
        *)
            false
            ;;
    esac
}

Bu fonksiyonu kullanmak için:

confirm && hg push ssh://..

ya

confirm "Would you really like to do a push?" && hg push ssh://..

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • martin shervington

    martin sherv

    7 EKİM 2011
  • movies95

    movies95

    27 Kasım 2006
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012