Từ bash
trang hướng dẫn:
[[ expression ]]
- trả về trạng thái 0 hoặc 1 tùy theo đánh giá biểu thức biểu thức điều kiện.
Và, đối với các biểu thức, một trong các tùy chọn là:
expression1 && expression2
- đúng nếu cả hai expression1
và expression2
đều đúng.
Vì vậy, bạn có thể and
kết hợp chúng lại như sau ( -n
ngược lại -z
để chúng ta có thể thoát khỏi !
):
if [[ -n "$var" && -e "$var" ]] ; then
echo "'$var' is non-empty and the file exists"
fi
Tuy nhiên, tôi không nghĩ rằng nó cần thiết trong trường hợp này, -e xyzzy
là đúng nếu xyzzy
tệp tồn tại và có thể dễ dàng xử lý các chuỗi trống. Nếu đó là những gì bạn muốn thì bạn thực sự không cần -z
kiểm tra không trống:
pax> VAR=xyzzy
pax> if [[ -e $VAR ]] ; then echo yes ; fi
pax> VAR=/tmp
pax> if [[ -e $VAR ]] ; then echo yes ; fi
yes
Nói cách khác, chỉ cần sử dụng:
if [[ -e "$var" ]] ; then
echo "'$var' exists"
fi
bash
; tuy nhiên, để tận dụng tối đa "bashism", hãy xem câu trả lời của @ paxdiablo.