কনফিগার ফাইল থেকে পরিবর্তনশীল মানগুলি পান


1

নীচে কিছু ভেরিয়েবলের সাথে আমার একটি কনফিগার ফাইল রয়েছে তবে আমার কমান্ডটি কিছু ভেরিয়েবলের মানটি পড়তে পারে, আমি কনফিগার ফাইলে সমস্ত মান পড়তে পারি না। সংখ্যা সহ কেবল পাঠযোগ্য মান বলে মনে হয়। সম্ভাব্য সমস্ত ধরণের মান পড়ার আরও ভাল উপায় কী?

sed -n '/^SENDER=\([*]*\)$/s//\1/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
SENDER=xpto@xpto.bar

উত্তর:


3

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

[*]

এটা কি ধরনের সিনট্যাক্স? যেকোন চর .রিজেক্সপ্সে রয়েছে।

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

তবে আমি সন্দেহ করি আপনি যা করছেন তা করার জন্য আপনি একটি সঠিক উপায় বেছে নিয়েছেন। আপনার কী দরকার? সম্ভবত, অ্যারেতে পুরো কনফিগারেশনটি পড়া ভাল।

#!/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]}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.