Obtém valores de variáveis do arquivo de configuração

0

Eu tenho um arquivo de configuração com algumas variáveis, por exemplo, abaixo, mas meu comando só lê algum valor variável, não consigo ler todos os valores no arquivo de configuração. Parece apenas ler valores com números. qual é a melhor maneira de ler todos os tipos possíveis de valores?

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

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]
    
por Rui Branco 02.08.2014 / 02:58

1 resposta

3

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

[*]

Que tipo de sintaxe é essa? Qualquer caractere é . em regexps.

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

Mas duvido que você tenha escolhido o caminho certo para fazer o que está fazendo. Para que você precisa disso? Muito provavelmente, seria muito melhor ler toda a configuração no array.

#!/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]}
    
por 02.08.2014 / 03:36

Tags