文件名以 * 开头

文件名以 * 开头

我有一个脚本,它必须遍历文件才能从中获取特定行。文件名从变量中获取,例如 $FILENAME,我们遇到这种情况:

cat /路径/$FILENAME

但是当FILENAME==*.some.file出现问题时。文件*.some.file确实存在,但是 cat 通过掩码列出所有文件*.some.filefirst.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 将文件扩展为*匹配的文件列表。

相关内容