Xin lưu ý, đó [] && cmd
không giống như if .. fi
xây dựng.
Đôi khi hành vi của nó khá giống nhau và bạn có thể sử dụng [] && cmd
thay 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 .. fi
cẩ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 ls
thất bại, echo
sẽ đượ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 [
.
if
tương thích POSIX. Vì vậy, nếu bạn phải lựa chọn giữa [
và if
chọ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 .