J'ai oublié de publier les précédentes versions, aussi je vous présente cette nouvelle version.

Après pas mal de boulot, il ne reste plus que la fonction iniParseFile qui continue d'utiliser awk, sinon tout le reste n'utilise plus que le Shell avec lequel il a été exécuté.
Et j'en ai profité pour passer le code sous GPLv3 et DSSL (disponible ).

L'incontournable Changelog :

 v0.23 [30/01/2010] Flyounet  [@] :
       * fileCreate: In case of error during touch an ugly message is now
         sent to /dev/null (for chmod too)
 v0.24 [03/03/2010] Flyounet  [@] :
       > First svn version
 v0.25 [01/04/2010] Flyounet  [@] :
       + textFill: equivalent to perl "string" x number
       + textBox: put a caracter all around a text
       * textBox: not working with KSH
       + _str2lower & _str2upper have been added, cause to KSH that doesn't
         support Case modification of Bash.
       * textBox: now use _str2*er and work with KSH
       * iniGetValue: Remove the call to awk (Yeah ! Love shell !)
 v0.26 [22/04/2010] Flyounet  [@] :
       + parseHeadersForHelp: Print the headers of each function in a file.
         Headers are based on a first line containing a #F??.
       > textBox: Only works with KSH... Fuck !
       * textBox: A subfile is needed to make it works with bash.

J'ai tenté de la rendre la plus indépendante possible de sed et awk qui sont assez incontournable[1]. Elle fonctionne sous bash ou ksh.

Ci-dessous un aperçu des variables et fonctions : common.lib.png

En annexes sont fournis les fichiers indépendants, ainsi qu'une archive regroupant le tout.
Les fichiers sont :

  • common.lib_v0.26.tar.bz2 : L'archive qui contient tous les fichiers,
  • common.lib.README : Une micro documentation,
  • common.lib : La librairie Shell,
  • _common4bash.lib : L'extension pour Bash de la fonction textBox(),
  • doc/common.lib.mm : La liste de fonctions et variables sous forme de fichier Free(Mind|Plane),
  • doc/common.lib.png : La liste de fonctions et variables sous forme de fichier image,
  • test/libHelp.sh : Un script de test qui retourne de l'aide sur les fonctions,
  • test/test_common-lib.conf : Un fichier de configuration pour exécuter le script de test,
  • test/test_common-lib.sh : Un script de test, qui exécute quasiment toutes les fonctions de la librairie.

Les md5 des fichiers :

26ecc237a2dcc4f74f3a21ed3db809d6  _common4bash.lib
2c540c2a2516829a7f0796ebdc789979  common.lib
07d486cdcf8c5623a2a17b7183c0b7be  common.lib.README
dde7d1862448a90eaadfd8e2ee5ec811  doc/common.lib.png
606b099e82e48e846c71555b2827237a  doc/common.lib.mm
d04d3958e604ffdd69d5387d6c95110f  test/libHelp.sh
51504fd29f5fd1aa73137d73657536ae  test/test_common-lib.conf
21793fdcd0cc20cf16743e223d157a63  test/test_common-lib.sh
4cef5fce3dc9d224333540b91bd53f61  F01common.lib_v0.26.tar.bz2

Les sha1 des fichiers :

123dfbdbce15d27c0d5ca8a927d5d2fe0a575b41  _common4bash.lib
72e7de48dd30ef059bc16bbd809536505de62cdf  common.lib
fa9dead34dbc604a49ddf15b81805d288a9a0157  common.lib.README
0acab9ac384dfb9ce9e30baa4195cd2088fc069b  doc/common.lib.png
d32b6a8c2ad02816031b1e2f39dde6d7f41818af  doc/common.lib.mm
f8f1bf4afb8e54ec122f5f6e67a8a0bba72e98c8  test/libHelp.sh
34a05abbd28321b353c34b4003b7e001afd8a1b0  test/test_common-lib.conf
db07298d8710c78ca681dc4496408ee4901aa000  test/test_common-lib.sh
b849101928c71eec69f7623b233f369bf0dcfd3c  F01common.lib_v0.26.tar.bz2

Ci-dessous la liste des fonctions :

#F01.01.03
#Function : ps2, Print to screen string passed in argument
#F01.02.02
#Function : p2st, Print to screen string passed in argument, with Time before
#F01.03.01
#Function : oops, Print to screen string passed in argument, and exit 1
#F01.04.01
#Function : oopst, Print to screen string passed in argument, with time before, and exit 1
#F01.05.06
#Function : myDebug, Print to screen string passed in argument if debug level is reach
#F01.06.02
#Function : myError, Store error in variables
#F01.07.02
#Function : fileCheck, Check file for presence and permission
#F01.08.02
#Function : fileCreate, Create file with permissions if asked
#F01.09.01
#Function : fileDelete, Delete the specified file
#F01.10.04
#Function : iniGetValue, Get the value from a specified INI file
#F01.11.04
#Function : iniParseFile, Set all values from a specified INI file
#F01.12.03
#Function : trim, Remove all blank from begining and end
#F01.13.03
#Function : logRotate, Transfer the begining of a file to the rotationned version.
#F01.14.01
#Function : logMe, Send the log to the log files
#F01.15.01
#Function : logMeV, Send the log to the verbose log files
#F01.16.03
#Function : isFunction, Verify that the function exists
#F01.17.07
#Function : sprintf, return a formatted string
#F01.18.02
#Function : ltrim, Remove all blank from begining
#F01.19.02
#Function : rtrim, Remove all blank from end
#F01.20.01
#Function : _str2lower, lower all characters
#F01.21.01
#Function : _str2upper, upper all characters
#F01.22.01
#Function : textFill, Create a text filled by the caracter
#F01.23.03
#Function : textBox, Create a box around the text
#F01.24.05
#Function : parseHeadersForHelp, Print headers of function for a given file
#F01.99.02
#Function : F01Version, Return/Print version information
#F01.23-1.02
#Function : _textBox4Bash, Create a box around the text

Notes

[1] Mes fonctions préférées sont sans aucun doute : sprintf et les *trim.