首页 > 解决方案 > 带有环境变量的文件列表

问题描述

在 linux 中,我有一个名为file_list.txt的文件列表,其中该列表中的路径还包括一个 env 变量(对于此示例,该文件列表中列出的文件是$HOME/myfile)。

> cat file_list.txt
$HOME/myfile

> ls `cat file_list.txt`
ls: $HOME/myfile: No such file or directory

> ls $HOME/myfile
/home/user/myfile

这是为什么?如何对文件列表中列出的文件运行操作(例如 ls、less、vim 等)?

标签: shellcsh

解决方案


如果要扩展变量,您将需要以下内容:

$ sh -c "ls `cat file_list.txt`"

在这种情况下,命令是从字符串中读取的,因此会扩展变量(如果有)。

$ eval "ls `cat file_list.txt`"

以防万一检查这个问题:为什么在 Bash 中应该避免使用 eval,我应该使用什么来代替?


推荐阅读