shell - 带有环境变量的文件列表
问题描述
在 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 等)?
解决方案
如果要扩展变量,您将需要以下内容:
$ sh -c "ls `cat file_list.txt`"
在这种情况下,命令是从字符串中读取的,因此会扩展变量(如果有)。
$ eval "ls `cat file_list.txt`"
以防万一检查这个问题:为什么在 Bash 中应该避免使用 eval,我应该使用什么来代替?
推荐阅读
- python - 添加功能以在我的 Discord 机器人 [Python] 中使用关键字在 Youtube 上进行搜索
- node.js - 如何使用带有 mongoose@6.0.5 和 Nodejs 的 SSL 证书连接到 Mongodb?
- javascript - 按字母数字顺序排列数组并带有条件
- laravel - Laravel用camelCase创建方法
- ssh - 在两个远程主机之间传输文件,在本地拥有授权密钥?
- node.js - 如何从我的数据库查询中获取结果?
- flutter - 在flutter中覆盖提升按钮.icon内的标签和图标颜色?
- python - 在 S3 中获取最新上传文件的最简单方法是什么(当其他现有文件被覆盖时)-Python
- html - 锚标记不更改 URL
- javascript - NPM 包是否有“手册页”或 `--help`