Search code examples
shellconfig

Reading a config file from a shell script


I am looking for a shell script analog to something like Pythons's ConfigParser or Perl's Config::INI. I have sourced files in the past to accomplish this, but I'd prefer to read rather than execute my "config file". Does anyone know of anything comparable to the above modules available for shell (or bash) scripts?


Solution

  • You don't want source it, so you should:

    1.read the config, 2.verify lines 3.eval them

    CONFIGFILE="/path/to/config"
    echo "=$ADMIN= =$TODO= =$FILE=" #these variables are not defined here
    eval $(sed '/:/!d;/^ *#/d;s/:/ /;' < "$CONFIGFILE" | while read -r key val
    do
        #verify here
        #...
        str="$key='$val'"
        echo "$str"
    done)
    echo =$ADMIN= =$TODO= =$FILE= #here are defined
    

    sample of config file

    ADMIN: root
    TODO: delete
    
    var=badly_formtatted_line_without_colon
    
    #comment
    FILE: /path/to/file
    

    if you run the above sample should get (not tested):

    == == ==
    =root= =delete= =/path/to/file=
    

    sure this is not the best solution - maybe someone post a nicer one.