从配置文件获取变量值

从配置文件获取变量值

我有一个配置文件,里面有一些变量,例如下面这些,但我的命令只读取一些变量值,我无法读取配置文件中的所有值。似乎只能读取数字值。有什么更好的方法来读取所有可能类型的值?

sed -n '/^SENDER=\([*]*\)$/s//\1/p' "Config_file" 

配置文件:

# Some text
LOGLEVEL=1

# Some text
THRESHOLD=0

# Some text
SAVERULES=0

# Some text
LINESTOSEARCH=1000000

# Some text
HTDOCSFOLDER=/var/www/

# Some text
LOG=/var/log/access.log

# Some text
[email protected]

答案1

/^SENDER=\([*]*\)$/s//\1/p

[*]

这是什么语法?.正则表达式中任何字符都是。

$ sed -n '/^SENDER=\(.*\)$/s//\1/p' <<< [email protected]
[email protected]

但我怀疑你选择的做事方法是否正确。你需要这个做什么?很可能,以数组形式读取整个配置会更好。

#!/bin/bash

readconfig() {
    local ARRAY="$1"
    local KEY VALUE 
    local IFS='='
    declare -g -A "$ARRAY"
    while read; do
        # here assumed that comments may not be indented
        [[ $REPLY == [^#]*[^$IFS]${IFS}[^$IFS]* ]] && {
            read KEY VALUE <<< "$REPLY"
            [[ -n $KEY ]] || continue
            eval "$ARRAY[$KEY]=\"\$VALUE\""
        }
    done 
}

readconfig MYCONFIG < "Config_file"

echo ${MYCONFIG[SENDER]}

相关内容