หากคุณกำลังทดสอบ / แก้ไขจุดบกพร่องของสคริปต์ทุบตีและเพียงต้องการข้ามไปข้างหน้าผ่านส่วนของรหัสอย่างน้อยหนึ่งรายการต่อไปนี้เป็นวิธีที่ง่ายมากที่จะทำและหาได้ง่ายในภายหลัง (ไม่เหมือนกับวิธีส่วนใหญ่ อธิบายไว้ข้างต้น).
#!/bin/bash
echo "Run this"
cat >/dev/null <<GOTO_1
echo "Don't run this"
GOTO_1
echo "Also run this"
cat >/dev/null <<GOTO_2
echo "Don't run this either"
GOTO_2
echo "Yet more code I want to run"
การวางสคริปต์ของคุณกลับมาเป็นปกติเพียงลบเส้นใด ๆ GOTO
กับ
เรายังสามารถพร็อพเพอร์ตี้โซลูชันนี้ได้โดยเพิ่มgoto
คำสั่งเป็นนามแฝง:
#!/bin/bash
shopt -s expand_aliases
alias goto="cat >/dev/null <<"
goto GOTO_1
echo "Don't run this"
GOTO_1
echo "Run this"
goto GOTO_2
echo "Don't run this either"
GOTO_2
echo "All done"
นามแฝงมักจะไม่ทำงานในสคริปต์ทุบตีดังนั้นเราจึงต้องการshopt
คำสั่งเพื่อแก้ไข
หากคุณต้องการเปิด / ปิดการใช้งานของคุณgoto
เราต้องเพิ่มอีกนิด:
#!/bin/bash
shopt -s expand_aliases
if [ -n "$DEBUG" ] ; then
alias goto="cat >/dev/null <<"
else
alias goto=":"
fi
goto '#GOTO_1'
echo "Don't run this"
#GOTO1
echo "Run this"
goto '#GOTO_2'
echo "Don't run this either"
#GOTO_2
echo "All done"
จากนั้นคุณสามารถทำได้export DEBUG=TRUE
ก่อนเรียกใช้สคริปต์
ป้ายกำกับเป็นความคิดเห็นดังนั้นจะไม่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์หากปิดการใช้งานgoto
(โดยการตั้งค่าgoto
เป็น ' :
' ไม่ต้องใช้ op) แต่สิ่งนี้หมายความว่าเราต้องอ้างข้อความเหล่านั้นในgoto
งบของเรา
เมื่อใดก็ตามที่ใช้goto
วิธีแก้ปัญหาใด ๆคุณต้องระวังว่าโค้ดที่คุณกระโดดข้ามไม่ได้ตั้งค่าตัวแปรใด ๆ ที่คุณต้องใช้ในภายหลัง - คุณอาจต้องย้ายคำจำกัดความเหล่านั้นไปด้านบนสุดของสคริปต์ของคุณ ของgoto
งบของคุณ
goto
ทุบตี (อย่างน้อยก็บอกcommand not found
สำหรับฉัน) ทำไม? โอกาสที่จะมีวิธีที่ดีกว่าที่จะทำ