Здесь слишком много переменных и необъявленных предположений, чтобы исчерпывающе ответить на ваш вопрос.
Основная ловушка здесь заключается в том, что оболочка (, т.е. большинство Bourne -совместимых оболочек -, на самом деле не уверенных в zsh или csh и производных )по умолчанию будет проходить через нерасширенный глобус , если он ничего не соответствует. Таким образом, выражение, подобное \\[[a-z0-9]*\\]
, сначала используется как подстановочный знак. Если нет соответствующих файлов, (таких как \fno[rd\]
, где все неалфавитные символы являются буквальными ), подстановочный знак передается в grep
дословно.
(Давайте рассмотрим это снова. Это двойная обратная косая черта, то есть обратная косая черта в кавычках, за которой следуют две открывающиеся квадратные скобки. Первый создает класс символов, первый символ которого является вторым, литералом [
. Результат синтаксического анализа этого регулярного выражения другой, но такой же запутанный.)
Единственным разумным решением этой проблемы является правильное цитирование всего, что не нуждается в маркировке пробелами и расширении подстановочных знаков оболочкой. Я рекомендую использовать одинарные кавычки для всех ваших регулярных выражений. Тогда вы сможете сформировать разумное ожидание того, что и как будет совпадать, без двух экспертных интерпретаций (одной оболочки, одного регулярного выражения )ваших шаблонов.
Если вы пытаетесь полностью сопоставить var[1]
, регулярное выражение вроде [a-z]*\[[0-9]*\]
делает что-то подобное. Если вы хотите, чтобы квадратные скобки были частью класса символов, попробуйте [][a-z0-9]*
, где первая ]
и вторая [
являются буквальными членами класса символов. И помните об одинарных кавычках, если вы передаете их в grep
в оболочке.
Этот рабочий процесс использует DVD только как установочный носитель, и DVD можно удалить после завершения установки и перезагрузки.