2013-05-06 29 views

Trả lời

95

Vì vậy, để làm cho biểu thức của bạn hoạt động, việc thay đổi && cho -a sẽ thực hiện thủ thuật.

Nó là đúng như thế này:

if [ -f $VAR1 ] && [ -f $VAR2 ] && [ -f $VAR3 ] 
then .... 

hoặc như

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 chi tiết trong câu hỏi này bash : Multiple Unary operators in if statement và một số tài liệu tham khảo cho có như What is the difference between test, [ and [[ ?.

+1

cảm ơn rất nhiều! Tôi sẽ làm cho nó chấp nhận câu trả lời rất sớm! ;) –

+8

Lưu ý rằng [POSIX] (http://pubs.opengroup.org/onlinepubs/000095399/utilities/test.html#tag_04_140_16) đề xuất sử dụng '&&' 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 đọc ký hiệu đầu tiên, nếu không thì ký tự thứ hai và bỏ qua phần thứ ba, đặc biệt vì nó có thể khó đọc và khó đọc nếu bạn cần biểu thức nhóm. –