В дополнение к другим ответам, в которых рассказывалось, как делать то, что вы хотели, я пытаюсь объяснить, что было не так (что вы и хотели).
В Bash ifследует команда. Если код выхода этой команды равен 0, то thenчасть выполняется, иначе выполняется elseчасть, если она есть.
Вы можете сделать это с помощью любой команды, как описано в других ответах: if /bin/true; then ...; fi
[[это внутренняя команда bash, предназначенная для некоторых тестов, таких как существование файла, сравнение переменных. Аналогичным образом [, это внешняя команда (обычно она находится в /usr/bin/[), которая выполняет примерно те же тесты, но нуждается ]в качестве окончательного аргумента, поэтому ее ]необходимо дополнить пробелом слева, а это не так ]].
Здесь вам не нужно [[ни [.
Другое дело, как вы цитируете вещи. В bash есть только один случай, когда пары кавычек вкладывают, это так "$(command "argument")". Но у 'grep 'SomeString' $File'вас есть только одно слово, потому что 'grep 'это единица в кавычках, которая соединяется с, SomeStringа затем снова соединяется с ' $File'. Переменная $Fileдаже не заменяется своим значением из-за использования одинарных кавычек. Правильный способ сделать это grep 'SomeString' "$File".