Trong tập lệnh bên dưới - nhắc người dùng xác nhận rằng họ muốn tiến hành chạy tập lệnh có khả năng xấu - khi người dùng nhập vào Y
dấu nhắc - nó sẽ thoát ra khỏi case
khối, chỉ được gửi lại vào while
vòng lặp.
#! /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?"
Khi n
được nhập, tập lệnh tồn tại hoàn toàn như mong muốn. Tôi muốn biết làm thế nào để làm cho nó khi Y
được nhập vào tập lệnh thoát ra khỏi cả khối case
và khối while, nhưng không thoát hoàn toàn. Có thứ gì tôi có thể đặt vào cho trình giữ chỗ ("Cái gì ở đây ??") để làm điều đó?
Bạn đã chỉnh sửa mã của mình kể từ lần đầu tiên tôi trả lời, nhưng lưu ý trong mọi trường hợp
—
dhag
$TEST=1
nên TEST=1
và tập lệnh của bạn rất có khả năng hoạt động với thay đổi này.
doh, vâng tôi đã thấy điều đó khi thử nghiệm!
—
the_velour_fog
@dhag Tôi nghĩ rằng tôi đã cải thiện bản chỉnh sửa của bạn, hãy xem. Có vẻ như mục tiêu của bạn là viết lại mã thành một cái gì đó mà câu trả lời được chấp nhận của bạn rất phù hợp và tôi nghĩ bây giờ nó gần hơn.
—
derobert
@derobert: Bản chỉnh sửa của bạn có vẻ tốt đối với tôi; nó chắc chắn làm cho câu hỏi rõ ràng hơn
—
dhag
[Yn]*)
; bạn có thể có nghĩa là[Yy]*)
.