在 bash 中读取配置文件的最佳方法是什么?
例如,您有一个脚本并且不愿意在每次调用该脚本时手动填写所有配置。
编辑1:我想我没有说清楚,所以:我想要的是......我有一个配置文件,就像
variable_name value
variable_name value ...
Run Code Online (Sandbox Code Playgroud)
我想读那个。我知道我可以为我正在寻找的参数grep它……但也许有更聪明的方法:)
mur*_*uru 70
正如 mbiber 所说,source另一个文件。例如,您的配置文件(例如some.config)将是:
var1=val1
var2=val2
Run Code Online (Sandbox Code Playgroud)
您的脚本可能如下所示:
#! /bin/bash
# Optionally, set default values
# var1="default value for var1"
# var1="default value for var2"
. /path/to/some.config
echo "$var1" "$var2"
Run Code Online (Sandbox Code Playgroud)
中的许多文件/etc/default通常以类似的方式用作其他 shell 脚本的配置文件。此处帖子中一个非常常见的示例是/etc/default/grub. 该文件用于设置 GRUB 的配置选项,因为它grub-mkconfig是一个来源它的 shell 脚本:
sysconfdir="/etc"
#…
if test -f ${sysconfdir}/default/grub ; then
. ${sysconfdir}/default/grub
fi
Run Code Online (Sandbox Code Playgroud)
如果您确实必须处理表单的配置:
var1 some value 1
var2 some value 2
Run Code Online (Sandbox Code Playgroud)
然后你可以做这样的事情:
while read var value
do
export "$var"="$value"
done < /path/to/some.config
Run Code Online (Sandbox Code Playgroud)
(你也可以做类似的事情eval "$var=$value",但这比获取脚本风险更大。你可能会比源文件更容易无意中破坏它。)
小智 8
使用source或.加载文件。
source /path/to/file
Run Code Online (Sandbox Code Playgroud)
或者
. /path/to/file
Run Code Online (Sandbox Code Playgroud)
还建议在加载之前检查文件是否存在,因为如果配置文件不存在,您不想继续运行脚本。
| 归档时间: |
|
| 查看次数: |
142040 次 |
| 最近记录: |