Назад | Перейти на главную страницу

имя файла начинается с *

У меня есть сценарий, он должен просматривать файлы, чтобы получить от них определенные строки. Имя файла берется из переменной, например $ 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 * к списку совпадающих файлов.