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