Bạn đang thiếu ;
s. Cú pháp chung nếu bạn đặt nó tất cả trong một dòng sẽ là:
if thing ; then ... ; else ... ; fi
các thing
có thể được khá nhiều bất cứ điều gì mà trả về một mã thoát. Chi nhánh then
được lấy nếu số thing
trả về 0, chi nhánh else
nếu không.
[
không phải là cú pháp, đó là chương trình test
(kiểm tra ls /bin/[
, nó thực sự tồn tại, man test
cho các tài liệu – mặc dù cũng có thể có một built-in phiên bản với các tính năng khác nhau/bổ sung.) Được sử dụng để kiểm tra khác nhau điều kiện chung trên các tệp và biến. (Lưu ý rằng [[
mặt khác, là cú pháp và được xử lý bởi trình bao của bạn, nếu nó hỗ trợ nó).
Đối với trường hợp của bạn, bạn không muốn sử dụng trực tiếp test
, bạn muốn kiểm tra điều gì đó trên máy chủ từ xa. Vì vậy, hãy thử một cái gì đó như:
if ssh [email protected] test -e "$file" ; then ... ; else ... ; fi
Bạn đang cố gắng để thực hiện tập tin đó ... –
Nói chung, bạn cần một dấu chấm phẩy trước 'sau đó':' nếu cmd; sau đó cmd; khác cmd; fi' –