Окрім інших відповідей, які розповідали, як робити те, що ти хотів, я намагаюся пояснити, що було не так (а що ти хотів.
У Bash ifслід виконувати команду. Якщо вихідний код цієї команди дорівнює 0, то thenчастина виконується, інакше elseчастина, якщо така виконується.
Це можна зробити за допомогою будь-якої команди, як пояснено в інших відповідях: if /bin/true; then ...; fi
[[це внутрішня команда bash, яка присвячена деяким тестам, наприклад, існуванню файлів, змінним порівнянням. Аналогічно [це зовнішня команда (вона розташована, як правило, в /usr/bin/[), яка виконує приблизно ті ж тести, але потребує ]остаточного аргументу, і саме тому ]необхідно забити пробіл ліворуч, з чим це не так ]].
Тут вам не потрібно [[ні [.
Інша справа, як ви цитуєте речі. У баші, є лише один випадок, коли пари цитат гніздяться, це "$(command "argument")". Але у 'grep 'SomeString' $File'вас є лише одне слово, тому що 'grep 'це цитується одиниця, яка об'єднується з, SomeStringа потім знову конкатенована ' $File'. Змінна $Fileнавіть не замінюється своїм значенням через використання одиничних лапок. Правильний спосіб це зробити grep 'SomeString' "$File".