Sử dụng toán tử && trong câu lệnh if


81

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:


169

Vì vậy, để làm cho biểu thức của bạn hoạt động, thay đổi &&cho -asẽ 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à [[? .


14
Lưu ý rằng POSIX khuyến nghị sử dụng &&||với ký hiệu ngoặc đơn trên -a-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.
Adrian Frühwirth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.