Skip to content

Instantly share code, notes, and snippets.

@ngoma84
Forked from splaspood/bash_iniparse.sh
Created February 22, 2018 14:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ngoma84/330bfcd69bc9f2f8f0723cbcd49e3af4 to your computer and use it in GitHub Desktop.
Save ngoma84/330bfcd69bc9f2f8f0723cbcd49e3af4 to your computer and use it in GitHub Desktop.
Parsing INI Files with Bash
cfg.parser () {
fixed_file=$(cat $1 | sed 's/ = /=/g') # fix ' = ' to be '='
IFS=$'\n' && ini=( $fixed_file ) # convert to line-array
ini=( ${ini[*]//;*/} ) # remove comments
ini=( ${ini[*]/#[/\}$'\n'cfg.section.} ) # set section prefix
ini=( ${ini[*]/%]/ \(} ) # convert text2function (1)
ini=( ${ini[*]/=/=\( } ) # convert item to array
ini=( ${ini[*]/%/ \)} ) # close array parenthesis
ini=( ${ini[*]/%\( \)/\(\) \{} ) # convert text2function (2)
ini=( ${ini[*]/%\} \)/\}} ) # remove extra parenthesis
ini[0]='' # remove first element
ini[${#ini[*]} + 1]='}' # add the last brace
eval "$(echo "${ini[*]}")" # eval the result
}
cfg.parser '/etc/my.ini'
cfg.section.images
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment