ในสคริปต์ด้านล่าง - ซึ่งจะแจ้งให้ผู้ใช้ยืนยันว่าพวกเขาต้องการดำเนินการเรียกใช้สคริปต์ที่อาจไม่ดี - เมื่อผู้ใช้เข้าสู่Y
พรอมต์ - มันจะแตกออกจากcase
บล็อกเท่านั้นที่จะถูกส่งกลับเข้าไปในwhile
วงอีกครั้ง
#! /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?"
เมื่อn
ป้อนสคริปต์จะมีอยู่ทั้งหมดตามต้องการ ผมอยากจะทราบวิธีการที่จะทำให้มันเพื่อที่ว่าเมื่อY
มีการป้อนแบ่งสคริปต์ออกของทั้งสองcase
และในขณะที่บล็อก แต่ไม่ได้ออกทั้งหมด มีบางอย่างที่ฉันสามารถใส่ไว้ในตัวยึดตำแหน่ง ("เกิดอะไรขึ้นที่นี่ ??") เพื่อทำสิ่งนั้น?
คุณแก้ไขรหัสของคุณตั้งแต่ฉันตอบครั้งแรก แต่ควรทราบในกรณีใด ๆ ที่
—
dhag
$TEST=1
ควรเป็นTEST=1
และสคริปต์ของคุณมีแนวโน้มที่จะทำงานกับการเปลี่ยนแปลงนี้
ใช่ฉันเห็นว่าเมื่อทดสอบ!
—
the_velour_fog
@dhag ฉันคิดว่าฉันได้ปรับปรุงการแก้ไขของคุณ - โปรดดู ดูเหมือนว่าเป้าหมายของคุณคือการเขียนรหัสใหม่เป็นสิ่งที่คำตอบที่คุณยอมรับนั้นเหมาะสมและฉันคิดว่าตอนนี้ใกล้เข้ามาแล้ว
—
Derobert
@derobert: การแก้ไขของคุณดูดีสำหรับฉัน มันทำให้คำถามชัดเจนขึ้น
—
dhag
[Yn]*)
;[Yy]*)
คุณอาจหมายถึง