Ngoài các câu trả lời khác, đã cho bạn biết cách 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
sẽ được theo sau bằng lệnh. Nếu mã thoát của lệnh này bằng 0, thì phần then
được thực thi, còn phần else
nếu có bất kỳ lệnh nào được thực thi.
Bạn có thể làm điều đó với bất kỳ lệnh như được giải thích trong 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ố xét nghiệm, giống như sự tồn tại tập tin, so sánh biến. Tương tự như vậy [
là một lệnh bên ngoài (nó nằm trong /usr/bin/[
) thực hiện gần như cùng một thử nghiệm nhưng cần ]
làm đối số cuối cùng, đó là lý do tại sao ]
phải được đệm với một không gian 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 khác là cách bạn trích dẫn mọi thứ. Trong bash, chỉ có một trường hợp cặp dấu ngoặc kép làm tổ, nó là "$(command "argument")"
.Nhưng trong 'grep 'SomeString' $File'
bạn chỉ có một từ, bởi vì 'grep '
là đơn vị được trích dẫn, được ghép nối với SomeString
và sau đó được nối lại với ' $File'
. Biến số $File
thậm chí không được thay thế bằng giá trị của nó do việc sử dụng dấu nháy đơn. Cách thích hợp để làm điều đó là grep 'SomeString' "$File"
.
Tương tự như http://stackoverflow.com/questions/4749330/how-to-test-if-string-exists-in-file-with-bash-shell – Pawel