<Trước | Nội dung | Tiếp theo>
Thoát ra khỏi vòng lặp
bash cung cấp hai lệnh nội trang có thể được sử dụng để điều khiển luồng chương trình bên trong các vòng lặp. Lệnh break ngay lập tức kết thúc một vòng lặp và điều khiển chương trình kết thúc bằng câu lệnh tiếp theo sau vòng lặp. Lệnh tiếp tục làm cho phần còn lại của vòng lặp bị bỏ qua và điều khiển chương trình tiếp tục với lần lặp tiếp theo của vòng lặp. Ở đây, chúng tôi thấy một phiên bản của chương trình menu trong khi kết hợp cả ngắt và tiếp tục:
#! / bin / bash
# while-menu2: chương trình thông tin hệ thống điều khiển menu DELAY = 3 # Số giây để hiển thị kết quả
trong khi đúng; làm
trong sáng
con mèo << - _EOF_
Xin hãy lựa chọn:
1. Thông tin hệ thống hiển thị
2. Hiển thị dung lượng đĩa
3. Hiển thị Sử dụng Không gian Nhà
0. Thoát
_EOF_
read -p "Nhập lựa chọn [0-3]>"
if [[$ REPLY = ~ ^ [0-3] $]]; then if [[$ REPLY == 1]]; sau đó
echo "Tên máy chủ: $ HOSTNAME"
ngủ $ DELAY
tiếp tục
fi
if [[$ REPLY == 2]]; sau đó df -h
ngủ $ DELAY
tiếp tục
fi
if [[$ REPLY == 3]]; sau đó
if [[$ (id -u) -eq 0]]; sau đó
echo "Sử dụng không gian gia đình (Tất cả người dùng)" du -sh / home / *
khác
#! / bin / bash
# while-menu2: chương trình thông tin hệ thống điều khiển menu DELAY = 3 # Số giây để hiển thị kết quả
trong khi đúng; làm
trong sáng
con mèo << - _EOF_
Xin hãy lựa chọn:
1. Thông tin hệ thống hiển thị
2. Hiển thị dung lượng đĩa
3. Hiển thị Sử dụng Không gian Nhà
0. Thoát
_EOF_
read -p "Nhập lựa chọn [0-3]>"
if [[$ REPLY = ~ ^ [0-3] $]]; then if [[$ REPLY == 1]]; sau đó
echo "Tên máy chủ: $ HOSTNAME"
ngủ $ DELAY
tiếp tục
fi
if [[$ REPLY == 2]]; sau đó df -h
ngủ $ DELAY
tiếp tục
fi
if [[$ REPLY == 3]]; sau đó
if [[$ (id -u) -eq 0]]; sau đó
echo "Sử dụng không gian gia đình (Tất cả người dùng)" du -sh / home / *
khác
echo "Sử dụng không gian tại nhà ($ USER)" du -sh $ HOME
fi
ngủ $ DELAY
tiếp tục
fi
nếu [[$ REPLY == 0]]; sau đó phá vỡ
fi
khác
echo "Mục nhập không hợp lệ." ngủ $ DELAY
xong rồi
echo "Chương trình đã kết thúc."
echo "Sử dụng không gian tại nhà ($ USER)" du -sh $ HOME
fi
ngủ $ DELAY
tiếp tục
fi
nếu [[$ REPLY == 0]]; sau đó phá vỡ
fi
khác
echo "Mục nhập không hợp lệ." ngủ $ DELAY
xong rồi
echo "Chương trình đã kết thúc."
Trong phiên bản này của tập lệnh, chúng tôi thiết lập một vòng lặp vô tận (một thứ không bao giờ tự kết thúc) bằng cách sử dụng đúng lệnh cung cấp trạng thái thoát cho trong khi. Kể từ đúng sẽ luôn thoát với trạng thái thoát bằng XNUMX, vòng lặp sẽ không bao giờ kết thúc. Đây là một kỹ thuật viết kịch bản đặc biệt đáng ngạc nhiên. Vì vòng lặp sẽ không bao giờ tự kết thúc, chương trình phải cung cấp một số cách để thoát ra khỏi vòng lặp khi đến thời điểm thích hợp. Trong tập lệnh này, phá vỡ lệnh được sử dụng để thoát khỏi vòng lặp khi lựa chọn “0” được chọn. Các tiếp tục lệnh đã được bao gồm ở cuối các lựa chọn tập lệnh khác để cho phép thực thi hiệu quả hơn. Bằng cách sử dụng tiếp tục, tập lệnh sẽ bỏ qua mã không cần thiết khi một lựa chọn được xác định. Ví dụ: nếu lựa chọn “1” được chọn và xác định, không có lý do gì để kiểm tra các lựa chọn khác.
<Trước | Nội dung | Tiếp theo>