Ngoài các câu trả lời khác, cho bạn biết làm thế nào để làm những gì bạn muốn, tôi cố gắng giải thích những gì sai (đó là những gì bạn muốn.
Trong Bash, ifđược tuân theo một lệnh. Nếu mã thoát của lệnh này bằng 0, thì thenphần đó được thực thi, elsephần khác nếu có được thực thi.
Bạn có thể làm điều đó với bất kỳ lệnh nào như được giải thích trong các câu trả lời khác: if /bin/true; then ...; fi
[[là một lệnh bash nội bộ dành riêng cho một số thử nghiệm, như sự tồn tại của tệp, so sánh biến. Tương tự [là một lệnh bên ngoài (thường được đặt trong /usr/bin/[) thực hiện các phép thử gần giống nhau nhưng cần ]làm đối số cuối cùng, đó là lý do tại sao ]phải được đệm bằng một khoảng trắng ở bên trái, không phải là trường hợp với ]].
Ở đây bạn không cần [[cũng không [.
Một điều nữa là cách bạn trích dẫn mọi thứ. Trong bash, chỉ có một trường hợp mà các cặp trích dẫn làm tổ, đó là "$(command "argument")". Nhưng trong 'grep 'SomeString' $File'bạn chỉ có một từ, bởi vì 'grep 'là một đơn vị được trích dẫn, được nối với SomeStringvà sau đó lại được nối với ' $File'. Biến $Filethậm chí không được thay thế bằng giá trị của nó do sử dụng dấu ngoặc đơn. Cách thích hợp để làm điều đó là grep 'SomeString' "$File".