bash - 替换从文件读取的行中的变量
问题描述
我已阅读具有以下变量的配置文件:
export BASE_DIR="\usr\usr1"
在同一个脚本中,我逐行读取文件,我想${BASE_DIR}
用\usr\usr1
.
在脚本中:
while read line; do
echo $line
done <file.txt
${BASE_DIR}\path1
应打印为\usr\usr1\path1
试过eval echo
和$(( ))
。
解决方案
您需要在读取包含赋值的行时设置变量。然后您可以稍后更换它。
#!/bin/bash
while read line; do
if [[ $line =~ ^BASE_DIR= ]]
then basedir=${line#BASE_DIR=}
fi
line=${line/'${BASE_DIR}'/$basedir}
printf "%s\n" "$line"
done < file.txt > newfile.txt
推荐阅读
- android - 来自修复图像的专辑封面
- java - 使用 JavaFX 拖放
- python - twitter bot selenium 不喜欢页面上的所有推文
- outlook-addin - Office js 插件:我可以从 excel 插件发送电子邮件吗?
- r - 使用谷歌驱动器闪亮的交互式文件
- purescript - 具有并发限制的并行(Aff)执行?
- spring-boot - 如何导入具有spring cloud vault客户端依赖的本地外部jar
- attributes - 使用 freeradius 包中的 dhcpclient 实用程序
- python - 派生模型类的模式版本?
- javascript - 使用 POST 请求 JS 模拟按钮单击