我有一个脚本,它必须遍历文件才能从中获取特定行。文件名从变量中获取,例如 $FILENAME,我们遇到这种情况:
cat /路径/$FILENAME
但是当FILENAME==*.some.file
出现问题时。文件*.some.file
确实存在,但是 cat 通过掩码列出所有文件*.some.file
(first.some.file
second.some.file
*.some.file
fourth.some.file
等等)路径上的单引号阻止包含变量。
有什么想法如何cat
(或grep
)仅一个*.some.file
?
答案1
使用双引号。这将扩展变量,但不会扩展任何嵌入的通配符。
cat /path/"$FILENAME"
答案2
cat "/path/to/$FILENAME"
不会扩展*
为一个整体。
答案3
cat \*.some.file
将进行转义,*
因此它被视为文字字符。
也会cat '*.some.file'
产生类似的效果。在这两种情况下,它都会阻止 bash 将文件扩展为*
匹配的文件列表。