带有配置文件的 POSIX shell 脚本,正确加载它

问题描述 投票:0回答:1

我在使用 Linux POSIX shell 脚本时遇到了一些困难(使用 ShellCheck 和 Dash shell 进行测试)。

到目前为止,我的脚本不需要任何配置文件。我在脚本的顶部使用了变量。然而,用户似乎不喜欢打开脚本并进行编辑,而是希望有一个单独的文件进行调整。

假设我们有一个名为

myScript
的脚本,并且在同一目录中我们有名为
myScript.conf
的配置文件。我可能已经让它工作了,但我对我的加载程序有一些严重的怀疑。举个例子,如果路径中有空格,它会起作用吗?另外,我真的需要这样做吗
dirname "$0"

最小片段:

myScript.conf

var1=stringA
var2=stringB

myScript

#!/bin/sh

error()
{
    printf >&2 '%s\n' "$@"
    exit 1
}

script_dir=$( dirname "$0" )
config_file="$script_dir"/myScript.conf

if [ ! -f "$config_file" ]; then
    error "The configuration file does not exist or it is not a regular file."
fi

if [ ! -r "$config_file" ]; then
    error "The configuration file exists, but it is not readable by this script."
fi

. "$config_file"

#
# DO SOME GOOD STUFF BASED ON CONFIG VARIABLES
#
linux shell sh posix
1个回答
0
投票

如果路径中有空格,它会工作吗

是的。使用 shellcheck 检查您的脚本。

我真的需要做目录名“$0”吗?

这取决于您想从哪里加载配置文件。如果您想从与存储脚本相同的目录加载它,那么可以。另一个助记符是

dir="$(dirname "$(readlink -f "$0")")"
也可以处理符号链接。

© www.soinside.com 2019 - 2024. All rights reserved.