[Script] Stockage (clé,valeur) ad-hoc pour scripts shell

Salut,

Il arrive souvent qu’on ait besoin dans un script shell de stocker différents paramètres d’une invocation à l’autre. Dans la plupart des cas, un bête tableau associatif (clé,valeur) est amplement suffisant mais on se retrouve souvent à bricoler un truc sur trois pattes. Du coup je ressors ce petit script de mes cartons, il se base sur SQLite pour stocker les paires de valeurs.
Accessoirement, même si le côté stockage n’est pas forcément nécessaire pour un script donné ça peut aussi servir pour des tableaux associatifs temporaires si on veut éviter d’utiliser bash.

Note : ça n’a pas vocation à être super performant, simplement à être facile d’emploi pour une utilisation ad-hoc.

Téléchargement : github.com/syam44/kvstore/tarball/master

Installation :

[code]# aptitude install sqlite3

./configure install[/code]

[size=125]Utilisation :[/size]

Un simple appel sans aucune commande va créer la base si nécessaire, et vérifier qu’elle est au bon format :

Si le fichier n’est pas une base SQLite / n’est pas au bon format, on obtient une erreur avec code de retour 2 :

$ echo "pas du sqlite" > test.db $ kvstore test.db Error: file is encrypted or is not a database ERROR: SQLite reported an error. Aborting. $ echo $? 2

Pour une invocation donnée, toutes les commandes sont traitées ou bien ensemble, ou bien pas du tout (autrement dit, si une des commandes provoque une erreur alors rien ne sera fait du tout), et dans l’ordre où elles sont placées sur la ligne de commandes (sauf -f, seule la dernière occurrence est prise en compte).

-f X utilise le texte X comme séparateur de champ lorsque des paires de valeurs (clé,valeur) sont affichées. Par défaut : |
-kv affiche toutes les paires de valeurs (clé,valeur) stockées.
-k affiche toutes les clés stockées.
-v affiche toutes les valeurs stockées.
-g K affiche la valeur correspondant à la clé K.
-m K affiche les paires de valeurs (clé,valeur) dont les clés correspondent au motif K (syntaxe glob classique d’Unix).
-s K V stocke une paire de valeurs (K,V).
-d K supprime la paire de valeurs (clé,valeur) correspondant à la clé K.

Exemples :

$ kvstore test.db $ kvstore test.db -s "clé1" "valeur1" -s "clé2" "valeur2" -kv clé1|valeur1 clé2|valeur2 $ kvstore test.db -f ";" -kv clé1;valeur1 clé2;valeur2 $ kvstore test.db -d "clé1" -k clé2 $ kvstore test.db -v valeur2 $ kvstore test.db -f ";" -k -s "clé3" "valeur3" -g "clé3" -m "clé*" -f "/" clé2 valeur3 clé2/valeur2 clé3/valeur3 $ kvstore -s "clé3" "autre chose" -kv clé2|valeur2 clé3|autre chose

Voilà, si ça peut vous servir dans vos scripts alors tant mieux… :wink: