Python có một tính năng ngôn ngữ tiện dụng được gọi là "cho-else" (tương tự "trong khi-else"), mà trông như thế này:Bắt chước các Python "cho-else" xây dựng
for obj in my_list:
if obj == target:
break
else: # note: this else is attached to the for, not the if
print "nothing matched", target, "in the list"
Về cơ bản, else
bị bỏ qua nếu ngắt vòng lặp, nhưng chạy nếu vòng lặp đã thoát qua lỗi điều kiện (đối với while
) hoặc kết thúc phép lặp (đối với for
).
Có cách nào để thực hiện việc này trong bash
không? Điều gần nhất tôi có thể nghĩ đến là sử dụng biến cờ:
flag=false
for i in x y z; do
if [ condition $i ]; then
flag=true
break
fi
done
if ! $flag; then
echo "nothing in the list fulfilled the condition"
fi
có chiều dài hơn.
Ngắn và ngọt. Tôi thích nó. – nneonneo
Big BUG! Danh sách 'x y z' không bao giờ được đưa vào' y z' nếu 'x' là sai! @ nneonneo làm thế nào bạn có thể chấp nhận điều đó ?! –
Đây là những gì tôi đang sử dụng: '(cho i in x y z; làm [điều kiện $ i] && echo" Điều kiện $ i đúng "& & exit; được thực hiện) && echo" Tìm thấy kết quả phù hợp "|| echo "Không tìm thấy kết quả phù hợp". Lưu ý việc sử dụng '&& thoát' thay vì' || exit', đó là chìa khóa để làm cho nó tiếp tục khi 'x' là sai. – nneonneo