<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
แตกออกจากวง
bash มีคำสั่งในตัวสองตัวที่สามารถใช้ควบคุมการไหลของโปรแกรมภายในลูปได้ คำสั่ง break จะยุติการวนซ้ำทันที และการควบคุมโปรแกรมจะกลับมาทำงานอีกครั้งพร้อมกับคำสั่งถัดไปที่ตามหลังลูป คำสั่ง continue ทำให้การวนซ้ำที่เหลือถูกข้ามไป และการควบคุมโปรแกรมจะกลับมาทำงานต่อด้วยการวนซ้ำครั้งต่อไปของลูป ที่นี่เราเห็นเวอร์ชันของโปรแกรม while-menu ที่รวมการหยุดและดำเนินการต่อ:
#! / bin / ทุบตี
# while-menu2: โปรแกรมข้อมูลระบบขับเคลื่อนด้วยเมนู DELAY=3 # จำนวนวินาทีที่แสดงผล
ในขณะที่จริง; ทำ
ชัดเจน
แมว <<- _EOF_
โปรดเลือก:
1. แสดงข้อมูลระบบ
2. แสดงพื้นที่ดิสก์
3. แสดงการใช้พื้นที่ในบ้าน
0. เลิก
_อีโอเอฟ_
อ่าน -p "ป้อนส่วนที่เลือก [0-3] > "
ถ้า [[ $REPLY =~ ^[0-3]$ ]]; แล้วถ้า [[ $REPLY == 1 ]]; แล้ว
echo "ชื่อโฮสต์: $HOSTNAME" เวลาทำงาน
นอน $DELAY
ต่อ
fi
ถ้า [[ $REPLY == 2 ]]; แล้ว df -h
นอน $DELAY
ต่อ
fi
ถ้า [[ $REPLY == 3 ]]; แล้ว
ถ้า [[ $(id -u) -eq 0 ]]; แล้ว
echo "Home Space Utilization (ผู้ใช้ทั้งหมด)" du -sh /home/*
อื่น
#! / bin / ทุบตี
# while-menu2: โปรแกรมข้อมูลระบบขับเคลื่อนด้วยเมนู DELAY=3 # จำนวนวินาทีที่แสดงผล
ในขณะที่จริง; ทำ
ชัดเจน
แมว <<- _EOF_
โปรดเลือก:
1. แสดงข้อมูลระบบ
2. แสดงพื้นที่ดิสก์
3. แสดงการใช้พื้นที่ในบ้าน
0. เลิก
_อีโอเอฟ_
อ่าน -p "ป้อนส่วนที่เลือก [0-3] > "
ถ้า [[ $REPLY =~ ^[0-3]$ ]]; แล้วถ้า [[ $REPLY == 1 ]]; แล้ว
echo "ชื่อโฮสต์: $HOSTNAME" เวลาทำงาน
นอน $DELAY
ต่อ
fi
ถ้า [[ $REPLY == 2 ]]; แล้ว df -h
นอน $DELAY
ต่อ
fi
ถ้า [[ $REPLY == 3 ]]; แล้ว
ถ้า [[ $(id -u) -eq 0 ]]; แล้ว
echo "Home Space Utilization (ผู้ใช้ทั้งหมด)" du -sh /home/*
อื่น
echo "Home Space Utilization ($USER)" du -sh $HOME
fi
นอน $DELAY
ต่อ
fi
ถ้า [[ $REPLY == 0 ]]; แล้วก็หัก
fi
อื่น
echo "รายการไม่ถูกต้อง" นอน $DELAY
เสร็จแล้ว
echo "โปรแกรมถูกยกเลิก"
echo "Home Space Utilization ($USER)" du -sh $HOME
fi
นอน $DELAY
ต่อ
fi
ถ้า [[ $REPLY == 0 ]]; แล้วก็หัก
fi
อื่น
echo "รายการไม่ถูกต้อง" นอน $DELAY
เสร็จแล้ว
echo "โปรแกรมถูกยกเลิก"
ในสคริปต์เวอร์ชันนี้ เราตั้งค่า an วงไม่มีที่สิ้นสุด (อันที่ไม่มีวันจบสิ้นด้วยตัวของมันเอง) โดยใช้ตัว จริง คำสั่งให้ระบุสถานะการออกไปยัง ในขณะที่. ตั้งแต่ จริง จะออกโดยมีสถานะเป็นศูนย์เสมอ การวนซ้ำจะไม่สิ้นสุด นี่เป็นเทคนิคการเขียนสคริปต์ที่ใช้กันทั่วไปอย่างน่าประหลาดใจ เนื่องจากลูปจะไม่สิ้นสุดด้วยตัวของมันเอง มันจึงขึ้นอยู่กับโปรแกรมเมอร์ที่จะหาทางแยกออกจากลูปเมื่อถึงเวลา ในสคริปต์นี้ ทำลาย คำสั่งใช้เพื่อออกจากลูปเมื่อเลือก "0" NS ดำเนินต่อ คำสั่งถูกรวมไว้ที่ส่วนท้ายของตัวเลือกสคริปต์อื่นๆ เพื่อให้การดำเนินการมีประสิทธิภาพมากขึ้น โดยใช้ ต่อสคริปต์จะข้ามโค้ดที่ไม่จำเป็นเมื่อมีการระบุการเลือก ตัวอย่างเช่น หากเลือกและระบุการเลือก “1” จะไม่มีเหตุผลใดที่จะต้องทดสอบการเลือกอื่นๆ