Obter valores variáveis ​​do arquivo de configuração


1

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

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

Arquivo de configuração:

# 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
SENDER=xpto@xpto.bar

Respostas:


3

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

[*]

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

$ sed -n '/^SENDER=\(.*\)$/s//\1/p' <<< SENDER=xpto@xpto.bar
xpto@xpto.bar

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 na matriz.

#!/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]}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.