在从文件读取的行中替换变量

时间:2019-06-14 15:13:01

标签: 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$(( ))

2 个答案:

答案 0 :(得分:0)

可以使用sed,此命令将搜索并替换一个值。美元符号是分隔符。

sed -ie 's$\${BASE_DIR}$\\usr\\usr1$1' hello.txt

答案 1 :(得分:0)

在读取包含分配的行时,需要设置变量。然后您可以稍后将其替换。

#!/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