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