Use aspas duplas. Isso expandirá a variável, mas não os curingas incorporados.
cat /path/"$FILENAME"
Eu tenho script, ele deve passar por arquivos para obter linhas específicas deles. O nome do arquivo é obtido a partir da variável, por exemplo, $ FILENAME e temos essa situação:
cat / path / $ FILENAME
mas quando FILENAME==*.some.file
existe um problema. O arquivo *.some.file
realmente existe, mas cat lista todos os arquivos por máscara *.some.file
( first.some.file
second.some.file
*.some.file
fourth.some.file
e assim por diante)
aspas simples no caminho previnem a inclusão da variável.
Alguma ideia de como cat
(ou grep
) apenas um *.some.file
?
cat "/path/to/$FILENAME"
não expandirá *
para uma glob.
cat \*.some.file
escapará do *
, por isso é tratado como um caractere literal.
Além disso, cat '*.some.file'
terá um efeito semelhante. Em ambos os casos, evita que o bash expanda o *
para uma lista de arquivos correspondentes.
Tags bash