Config dosyasından değişken değerleri al


1

Bazı değişkenler, örneğin, aşağıda bir yapılandırma dosyası var ama benim komut sadece bir değişken değeri okumak, config dosyasındaki tüm değerleri okuyamıyorum. Sadece sayıları olan değerleri okumak gibi görünüyor. olası tüm değer türlerini okumanın daha iyi yolu nedir?

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

Yapılandırma dosyası:

# 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

Yanıtlar:


3

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

[*]

Bu ne tür bir sözdizimi? Herhangi bir karakter .regexps içinde.

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

Ama yaptığınız şeyi yapmanın doğru yolunu seçtiğinizden şüpheliyim. Buna ne ihtiyacınız var? Büyük olasılıkla, tüm config dizisini okumak çok daha iyi olurdu.

#!/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]}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.