Я пишу сценарий. В чем разница между следующими двумя строками?
grep . || echo something
а также
grep "^\." || echo something
Grep использует регулярные выражения ; там, одна полная остановка . соответствует любому отдельному символу. Чтобы сопоставить буквальный полный стоп / период, вам нужно экранировать его обратной косой чертой, например: \. , ^ означает «начало строки».
Итак, grep . будет соответствовать всему, что содержит один символ (поэтому я предполагаю, что оно не будет соответствовать пустым строкам). С другой стороны, grep "^\." соответствует любой строке, которая начинается с литерала .
В Баш, || означает «или»; grep "^\." || echo something будет echo something если grep не перевернет ни одной строки (поэтому он оценивается как false). && используется для 'и' в bash.