首页 > 解决方案 > 替换从文件读取的行中的变量

问题描述

我已阅读具有以下变量的配置文件:

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$(( ))

标签: bash

解决方案


您需要在读取包含赋值的行时设置变量。然后您可以稍后更换它。

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

推荐阅读