我已经阅读了具有以下变量的配置文件:
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
和$(( ))
。
答案 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