读取 $USER 变量的字符串作为文本并解析它

读取 $USER 变量的字符串作为文本并解析它

我有一些配置文件。配置文件包含字符串: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

相关内容