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ì then
phần đó được thực thi, else
phầ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 SomeString
và sau đó lại được nối với ' $File'
. Biến $File
thậ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"
.