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

  • Bad Lip Reading

    Bad Lip Read

    22 Mart 2011
  • 趣味そうこ♪

    趣味そう

    3 Mart 2010
  • Moodle

    Moodle

    11 Mayıs 2010