2013-09-16 36 views
8

Tôi muốn có sự hợp lý không cho biểu thức điều kiện sau đây trong bash, làm cách nào tôi có thể thực hiện việc này?Làm thế nào để sử dụng toán tử logic không trong biểu thức điều kiện phức tạp trong Bash?

if [[ $var==2 || $var==30 || $var==50 ]] ; then 
    do something 
fi 

làm thế nào tôi có thể thêm vào trước các logic không trực tiếp trong biểu thức trên, nó rất tẻ nhạt để thay đổi nó một lần nữa vào thứ như thế này:

if [[ $var!=2 && $var!=30 && $var==50 ]] ; then 
    do something 
fi 

nhờ cho bất kỳ gợi ý!

Trả lời

17
if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then 
    do something 
fi 

Hoặc:

if [[ ! ($var == 2 || $var == 30 || $var == 50) ]] ; then 
    do something 
fi 

Và một thói quen tốt là phải có khoảng trống giữa các nhà khai thác và toán hạng có điều kiện của bạn.

Một số người cũng có thể gợi ý rằng nếu bạn chỉ cần so sánh số, sử dụng một toán tử số học thay vào đó, hoặc chỉ sử dụng (()):

if ! [[ var -eq 2 || var -eq 30 || var -eq 50 ]] ; then 
    do something 
fi 

if ! ((var == 2 || var == 30 || var == 50)) ; then 
    do something 
fi 

Mặc dù nó không phải là đáng khen ngợi hoặc thận trọng sẽ được đưa ra nếu $var đôi khi có thể là không phải là số hoặc không có giá trị hoặc không được đặt, vì nó có thể có nghĩa là 0 là mặc định hoặc giá trị khác của một biến khác nếu đó là tên của một biến.

Các vấn đề liên quan