我有一些配置文件。配置文件包含字符串:LocalPath /media/$USER
我在 bash 脚本中读取了配置文件:
while read var value
do
export "$var"="$value"
done < my-conf-file.conf
因此,我可以$LocalPath
在 bash 脚本中使用。它等于:/media/$USER
,但我想要:/media/user1
(user1 是我的用户)。
我该如何实现它?
答案1
read
不会从您的配置文件中扩展变量。
您可以验证:
$ read username
$USER
$ echo $username
$USER
这个答案Stackoverflow 上给出了一个解决方案。
将脚本更改为以下内容以使其扩展变量:
while read var value
do
export "$var"="$value"
done < <(envsubst < my-conf-file.conf)
答案2
正如 Kyle Strand 所建议的那样一条评论,最简单的解决方案是将配置文件制作成 Bash 脚本:
export LocalPath=/media/$USER
然后从主脚本中获取它:
source my-conf-file.sh
或者如果你有一堆变量,并且不想export
为每个变量都输入,请像这样创建配置文件:
set -a
LocalPath=/media/$USER
set +a