Pour pouvoir utiliser l'API, il suffit de mettre les deux fichiers param_api.sh et param_func.sh dans un dossier de votre choix et de les inclures dans votre script au moyen de la commande source:

# il faut inclure param_func.sh AVANT param_api.sh !
source "param_func.sh"
source "param_api.sh"

Pour tout script, il convient d'écrire une aide pour l'utilisateur. Ceci doit être fait avant que les paramètres ne soient lus par le script. Pour ce faire, il faut écrire une fonction usage de la manière suivante:

function usage()
{
  echo "Usage : ./test.sh [options]"
  echo "   -s                      Simple switch"
  echo "   --test1 VAL             Value with one param"
  echo "   --test3 VAL1 VAL2 VAL3  Value with 3 params"
  echo "   --help or -h            Shows the help"
}

La partie principale consiste à lire les paramètres passés au script (décrit ci-dessus). Pour ce faire, c'est très simple, il y a trois fonctions importantes:

  • readSwitch qui va lire un paramétre booléen (comme -s).
  • readParam qui va lire un paramètre avec un nombre d'arguments quelconque (style --test3).
  • readLeftParams qui va lire les arguments dynamiques en fin de ligne.

L'usage du readSwitch est assez simple. Si le paramètre -s est passé au script, la variable switch_enabled sera égale à 1 sinon à 0.

readSwitch "-s" "switch_enabled"

Pour le readParam, rien de bien compliqué si ce n'est qu'il faut également définir une valeur par défaut pour chacune des valeurs.

readParam "--test1" "p_test1" "aDefaultValue"

Donc si le paramètre --test1 est passé au script, il devra forcément avoir une valeur (--test1 maValeur) et cette dernière sera contenue dans la variable p_test1. Dans le cas où ce paramètre n'est pas passé au script, la variable p_test1 contiendra la valeur par défaut aDefaultValue.

Pour le paramètre --test3, c'est quasiment la même chose:

readParam "--test3" "p_var1" "default1" "p_var2" "default2" "p_var3" "default3"

Après avoir lu tous les paramètres, il est possible de récupérer les paramètres dynamiques passés en fin de ligne de commande (typiquement pour mysqldump, il est possible de passer un nombre dynamique de paramètres [table1 [table2 [...]]]).

# doit être APRES la lecture de tous les paramètres définis
readLeftParams "leftParams"

Ainsi, la variable leftParams sera un tableau qui contiendra tous les paramètres dynamiques.

La dernière étape consiste à vérifier qu'il n'y ai pas de paramètres qui n'aient pas été lus ou incompris. Pour finaliser le tout, il est nécessaire de faire un appel à la fonction showHelp qui stoppera l'exécution du script si nécessaire.

# doit être fait APRES que tous les paramètres ont été lus
showHelp

Et voila, il ne reste plus qu'a faire tout le reste du processing. J'ai mis en annexe les scripts de l'API ainsi qu'un exemple d'utilisation. Une dernière note: il faut avoir bash !