带有环境变量的文件列表
file-list with env variable
在 linux 中,我有一个名为 file_list.txt 的文件列表,其中的路径列表还包括一个环境变量(对于这个例子,该文件列表中列出的文件是 $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 等)?
如果你想扩展变量,你需要像这样的东西:
$ sh -c "ls `cat file_list.txt`"
在这种情况下,命令是从字符串中读取的,因此扩展变量(如果有的话)。
$ eval "ls `cat file_list.txt`"
以防万一,还要检查这个问题:Why should eval be avoided in Bash, and what should I use instead?
在 linux 中,我有一个名为 file_list.txt 的文件列表,其中的路径列表还包括一个环境变量(对于这个例子,该文件列表中列出的文件是 $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 等)?
如果你想扩展变量,你需要像这样的东西:
$ sh -c "ls `cat file_list.txt`"
在这种情况下,命令是从字符串中读取的,因此扩展变量(如果有的话)。
$ eval "ls `cat file_list.txt`"
以防万一,还要检查这个问题:Why should eval be avoided in Bash, and what should I use instead?