Skip to content

ictinnovations/bash-ini-parser

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bash-ini-parser Build Status

A ini file parser for bash relying only on builtins

Usage

You must copy bash-ini-parser on your project and source it:

$ source bash-ini-parser

or

$ . bash-ini-parser

Then, gived a properties file (file.ini):

[section]
   key = value
   key2 = value2

Issuing:

$ cfg_parser file.ini

Will declare functions per ini section called cfg_section_<section> which declares variables named as keynames so you can access its values using

$ cfg_section_<section>
$ echo $key
value
$ echo $key2
value2

Example

Goto scripts directory and launch example.sh

$ cd scripts
$ ./example.sh

Inspect its code, reuse on your scripts

Updating and saving changes

To update a value

var=new_value
cfg_update <sec> <var>

To save changes

cfg_writer > newfile.ini

Take care that saving function will loose comments and indentation, use with care

Checking a ini file

If you want to test your existing ini file use getkeyfromsection.sh

$ getkeyfromsection.sh <file.ini> sectionname keyname

e.g.:

See file.ini, it is a file with different indentations, and comments

Issuing:

$ ./testfile.sh file.ini sec1 var4

Outputs:

show parsed file.ini
[sec1]
var1="foo"
var2="hoge"
var3="fuga"
var4="pivo"
[sec2]
var1="bar"
var2="foo"
var3="eco"
var4="piyo baz qux"
var5="foo"
var6="hoge"

var4 value is "pivo"

Drawbacks

This is more a hack than a reliable parser, so keep in mind things like

  • multiword value vars will be arrays so you must access it as ${var[*]}

For a trusted parser (but based on python) checkout crudini

Alternatives

bash_ini_parser a slightly different approach.

Credits

This is just an enhacement from http://theoldschooldevops.com/2008/02/09/bash-ini-parser

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 90.5%
  • Makefile 9.5%