У меня есть сценарий, он должен просматривать файлы, чтобы получить от них определенные строки. Имя файла берется из переменной, например $ FILENAME и у нас такая ситуация:
cat / path / $ FILENAME
но когда FILENAME==*.some.file
существует проблема. файл *.some.file
действительно существует, но cat выводит список всех файлов по маске *.some.file
(first.some.file
second.some.file
*.some.file
fourth.some.file
и так далее) одинарные кавычки в пути предотвращают включение переменной.
Любые идеи, как cat
(или grep
) только один *.some.file
?
Используйте двойные кавычки. Это расширит переменную, но не включит подстановочные знаки.
cat /path/"$FILENAME"
cat "/path/to/$FILENAME"
не будет расширяться *
в глобус.
cat \*.some.file
избежит *
поэтому он рассматривается как буквальный символ.
Также cat '*.some.file'
будет иметь аналогичный эффект. В обоих случаях это предотвращает расширение bash *
к списку совпадающих файлов.