คำถามติดแท็ก case

4
“ esac” หมายถึงอะไรในตอนท้ายของคำสั่ง bash case? จำเป็นหรือไม่
ฉันพบตัวอย่าง "esac" หลายรายการที่ท้ายคำสั่ง bash case แต่ฉันไม่พบเอกสารที่ชัดเจนเกี่ยวกับการใช้งาน หน้าคนใช้มันและยังมีดัชนีในคำว่า ( https://www.gnu.org/software/bash/manual/bashref.html#index-esac ) แต่ไม่ได้กำหนดให้ใช้ มันเป็นวิธีที่จำเป็นในการจบคำสั่งกรณีวิธีปฏิบัติที่ดีที่สุดหรือเทคนิคบริสุทธิ์
55 bash  case 

4
ฉันจะใช้ตัวแปรเป็นเงื่อนไขเคสได้อย่างไร?
ฉันพยายามที่จะใช้ตัวแปรประกอบด้วยสตริงที่แตกต่างกันแยกออกจากกันด้วยความ|เป็นcaseทดสอบคำสั่ง ตัวอย่างเช่น: string="\"foo\"|\"bar\"" read choice case $choice in $string) echo "You chose $choice";; *) echo "Bad choice!";; esac ฉันต้องการที่จะพิมพ์fooหรือbarดำเนินการส่วนแรกของcaseคำสั่ง อย่างไรก็ตามทั้งสองfooและbarพาฉันไปที่สอง: $ foo.sh foo Bad choice! $ foo.sh bar Bad choice! ใช้"$string"แทน$stringทำให้ไม่มีความแตกต่าง string="foo|bar"ไม่ไม่ใช้ ฉันรู้ว่าฉันสามารถทำได้ด้วยวิธีนี้: case $choice in "foo"|"bar") echo "You chose $choice";; *) echo "Bad choice!";; esac ฉันสามารถคิดถึงวิธีแก้ปัญหาต่าง ๆ แต่ฉันต้องการทราบว่าเป็นไปได้ที่จะใช้ตัวแปรเป็นcaseเงื่อนไขในการทุบตี เป็นไปได้และถ้าเป็นเช่นนั้นได้อย่างไร

8
ข้อผิดพลาดกรณีขึ้นอยู่กับเงื่อนไขถ้า
ฉันกำลังมองหาวิธีที่จะมีข้อผิดพลาดเกิดขึ้นตามเงื่อนไข if ภายในเงื่อนไข case ใน bash ตัวอย่างเช่น: input="foo" VAR="1" case $input in foo) if [ $VAR = "1" ]; then # perform fallthrough else # do not perform fallthrough fi ;; *) echo "fallthrough worked!" ;; esac ในรหัสข้างต้นหากตัวแปรVARคือ1ฉันต้องการให้เงื่อนไขกรณีดำเนินการผิดพลาด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.