Tôi có ba biến:
VAR1="file1"
VAR2="file2"
VAR3="file3"
Cách sử dụng &&
toán tử và ( ) trong câu lệnh if như sau:
if [ -f $VAR1 && -f $VAR2 && -f $VAR3 ]
then ...
fi
Khi tôi viết mã này, nó báo lỗi. Đúng cách là gì?
Tôi có ba biến:
VAR1="file1"
VAR2="file2"
VAR3="file3"
Cách sử dụng &&
toán tử và ( ) trong câu lệnh if như sau:
if [ -f $VAR1 && -f $VAR2 && -f $VAR3 ]
then ...
fi
Khi tôi viết mã này, nó báo lỗi. Đúng cách là gì?
Câu trả lời:
Vì vậy, để làm cho biểu thức của bạn hoạt động, thay đổi &&
cho -a
sẽ là thủ thuật.
Nó đúng như thế này:
if [ -f $VAR1 ] && [ -f $VAR2 ] && [ -f $VAR3 ]
then ....
hoặc thích
if [[ -f $VAR1 && -f $VAR2 && -f $VAR3 ]]
then ....
hoặc thậm chí
if [ -f $VAR1 -a -f $VAR2 -a -f $VAR3 ]
then ....
Bạn có thể tìm thêm thông tin chi tiết trong câu hỏi này bash: Nhiều toán tử Unary trong câu lệnh if và một số tham chiếu được đưa ra ở đó như Sự khác biệt giữa test, [và [[? .
&&
và||
với ký hiệu ngoặc đơn trên-a
và-o
, vì vậy nếu bạn đang viết mã di động, hãy sử dụng ký hiệu đầu tiên, nếu không thì ký hiệu thứ hai và bỏ qua ký hiệu thứ ba, đặc biệt là vì nó có thể khó đọc và khó đọc nếu bạn cần để nhóm các biểu thức.