Aşağıdaki komut dosyasında - kullanıcıdan potansiyel olarak kötü bir komut dosyası çalıştırmaya devam etmek istediklerini onaylamasını ister - kullanıcı komut Yistemine girdiğinde - caseyalnızca whiletekrar döngüye geri gönderilmek üzere bloktan ayrılacaktır .
#! /bin/bash
set -e
echo
echo "bad install start"
echo "-----------------------------------------"
while true; do
read -p "this script will probably fail - do you want to run anyway?" yn
case $yn in
[Yy]*)
##### WHAT GOES HERE?? #####
;;
[Nn]*)
exit ;;
*)
echo "answer y or n" ;;
esac
echo "script has broken out of case back into while loop"
done
echo -e "\e[33m Installing bad packagename \e[0m"
apt-get install sdfsdfdfsd
echo "rest of script - will i keep running?"
Zaman ngirilir, komut tamamen arzu edilen çalışma mevcuttur. Ben bunu girmek için bilmek istiyorum böylece Ygirildiğinde script hem case ve while bloğundan kopar , ama tamamen çıkmaz. Bunu yapmak için yer tutucuya ("Buraya ne gidiyor ??") koyabileceğim bir şey var mı?
İlk yanıtladığımdan beri kodunuzu düzenlediniz, ancak olması
—
dhag
$TEST=1gereken her durumda not edin TEST=1ve komut dosyanızın bu değişiklikle çalışması çok olasıdır.
doh, evet test ederken gördüm!
—
the_velour_fog
@dhag Sanırım düzenlemenizi geliştirdim - lütfen bir göz atın. Görünüşe göre amacınız kodu, kabul ettiğiniz yanıtın uygun olduğu bir şeye yeniden yazmak ve şimdi daha yakın olduğunu düşünüyorum.
—
derobert
@derobert: Yaptığınız düzenleme bana iyi geliyor; kesinlikle soruyu daha açık hale getiriyor.
—
dhag
[Yn]*); muhtemelen demek istedin[Yy]*).