Xin lưu ý, đó [] && cmdkhông giống như if .. fixây dựng.
Đôi khi hành vi của nó khá giống nhau và bạn có thể sử dụng [] && cmdthay vì if .. fi. Nhưng chỉ đôi khi. Nếu bạn có nhiều hơn thì một lệnh để thực thi nếu có điều kiện hoặc bạn cần if .. else .. ficẩn thận và xử lý logic.
Một vài ví dụ:
[ -z "$VAR" ] && ls file || echo wiiii
Không giống như
if [ -z $VAR ] ; then
ls file
else
echo wiii
fi
bởi vì nếu lsthất bại, echosẽ được thực thi sẽ không xảy ra với if.
Một vi dụ khac:
[ -z "$VAR" ] && ls file && echo wiii
không giống như
if [ -z "$VAR" ] ; then
ls file
echo $wiii
fi
mặc dù công trình này sẽ hoạt động như nhau
[ -z "$VAR" ] && { ls file ; echo wiii ; }
xin lưu ý ;sau khi tiếng vang là quan trọng và phải ở đó.
Vì vậy, tiếp tục tuyên bố trên chúng ta có thể nói
[] && cmd == nếu lệnh đầu tiên thành công thì thực hiện lệnh tiếp theo
if .. fi == nếu điều kiện (cũng có thể là lệnh kiểm tra) thì thực thi lệnh (s)
Vì vậy, cho tính di động giữa [và chỉ [[sử dụng [.
iftương thích POSIX. Vì vậy, nếu bạn phải lựa chọn giữa [và ifchọn nhìn vào nhiệm vụ của bạn và hành vi dự kiến.
[ … ]với[[ … ]]vstest …, có câu trả lời đầy đủ hơn trong câu hỏi chủ yếu trùng lặp này .