Это использует преимущества расширенных ([112720]-E[112721]) GNU [112722]grep[112723] флагов, [112724]-w[112725] и [112726]-o[112727]. Без этих двух флагов вам пришлось бы поставить что-то вроде маленькой программы на Perl, которая может вырывать "слова" из строк текста, выделять слово, совпадающее с ключевыми словами, и использовать его в качестве имени файла.[112315].
] Если я вас правильно понял, у вас есть регекс в переменной, и вы хотели бы [] grep[
] использовать его, не придавая особого значения регекс-метахарным символам. Если это так, то опция []-F[
] (фиксированные строки) для []grep[
] - это то, что Вы хотите:[
grep -F "$var" your_file
]
[]Ваша система может также иметь специальную команду ([]fgrep[
]), которая эквивалентна вышеописанной:[
fgrep "$var" your_file
] ]Одиночные кавычки должны выполнить то, что вы хотите.[
] [# " is the special charater
var='"hello "word";'
grep "$var" file
]
[]Из бэш-страницы:[
] [Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not
occur between single quotes, even when preceded by a backslash.
Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $, ‘,
\, and, when history expansion is enabled, !. The characters $ and ‘ retain their special meaning within double quotes. The
backslash retains its special meaning only when followed by one of the following characters: $, ‘, ", \, or <newline>. A double
quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless
an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed.
]