Просто заключите вашу переменную в двойные кавычки
more filename.txt | grep -E "$errors"
Если бы вы сказали, скажем,
errors="2:|a-3|table found"
, команда
more filename.txt | grep -E $errors
была бы похожа на команду
more filename.txt | grep -E "2:|a-3|table" found
, поскольку оболочка заменяет $errors
значением 2:|a-3|table found
, а затем снова разбивает строку на слова, что будет (только для команды grep):
grep
-E
2:|a-3|table
found
, поэтому выполняется grep
с опцией -E
,шаблон 2:|a-3|table
и файл found
.Содержимое filename.txt
, которое дополнительно передается в эту команду, игнорируется.