将输入文件解析为环境变量

时间:2013-04-17 02:49:49

标签: linux bash

我有一个bash脚本,我想读取设置文件。设置文件的每一行对于脚本的其余部分都有特殊含义(例如,line1 = source_directory line2 = destination_directory)

有没有一种简单的方法可以将设置文件解析为我可以在脚本的其余部分使用的环境变量?

编辑:我喜欢源代码的想法,但是......我原本会有这样一个文件:

/my/source/dir
/my/dest/dir

src_dir=/my/source/dir
dst_dir=/my/dest/dir

我可以以某种方式解析第一个文件吗?

3 个答案:

答案 0 :(得分:1)

你可以找到它

. foo.sh

这将允许您使用foo.sh中定义的所有变量。 您也可以使用source关键字

进行调用
source foo.sh

More info

source: source filename [arguments]

    Read and execute commands from FILENAME in the current shell.

答案 1 :(得分:1)

一个常见的技巧是获取配置文件。例如,在Red Hat系统上,/etc/rc.d/etc/sysconfig中的系统脚本执行此操作。

. /etc/prog.conf

这会将它们视为脚本。如果设置使用name=value表单并且评论以#开头,则效果很好。

警告:确保配置文件是可信的,因为您像脚本一样执行它。它应该由同一个用户和组拥有,并且具有与父脚本相同的权限。

答案 2 :(得分:0)

如果你的文件只有值,你就不会真正“解析”它。

exec 3<config
read source <&3
read dest <&3
exec 3<-

如果您的值可能包含空格等,您可能需要向read添加一些标记。我应该更改答案以获得read -r,但我也鼓励您study the other available flags,