# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 ##@creator: jclain ##@created: 27/04/2016 03:19 ##@modifier: jclain ##@changecount: 1 ##@tags: ##@title: ulib/base.core !! {{{echo_}}} {{{ afficher la valeur $* sans passer à la ligne }}} !! {{{recho}}} {{{ afficher une valeur brute. contrairement à la commande echo, ne reconnaitre aucune option (i.e. -e, -E, -n ne sont pas signifiants) }}} !! {{{recho_}}} {{{ afficher une valeur brute, sans passer à la ligne. contrairement à la commande echo, ne reconnaitre aucune option (i.e. -e, -E, -n ne sont pas signifiants) }}} !! {{{should_quote}}} {{{ Tester si la chaine $* doit être mise entre quotes }}} !! {{{qval}}} {{{ Afficher la chaine $* quotée avec " }}} !! {{{qvalm}}} {{{ Afficher la chaine $* quotée si nécessaire avec " }}} !! {{{qvalr}}} {{{ Afficher la chaine $* quotée si nécessaire avec ", sauf si elle est vide }}} !! {{{qvals}}} {{{ Afficher chaque argument de cette fonction quotée le cas échéant avec " Chaque valeur est séparée par un espace. }}} !! {{{qwc}}} {{{ Dans la chaine $*, remplacer \ par \\, " par \", $ par \$, ` par \`, puis quoter la chaine avec ", sauf les wildcards * et ? Cela permet de quoter une chaine permettant de glober des fichiers, e.g eval "ls $(qwc "$value")" Note: la protection de ! n'est pas effectuée, parce que le comportement du shell est incohérent entre le shell interactif et les scripts. Pour une version plus robuste, il est nécessaire d'utiliser un programme externe tel que sed ou awk }}} !! {{{qlines}}} {{{ Traiter chaque ligne de l'entrée standard pour en faire des chaines quotées avec ' }}} !! {{{setv}}} {{{ initialiser la variable $1 avec la valeur $2* note: en principe, la syntaxe est 'setv var values...'. cependant, la syntaxe 'setv var=values...' est supportée aussi }}} !! {{{echo_setv}}} {{{ Afficher la commande qui serait lancée par setv "$@" }}} !! {{{setx}}} {{{ syntaxe 1: setx var cmd initialiser la variable $1 avec le résultat de la commande "$2..@" note: en principe, la syntaxe est 'setx var cmd args...'. cependant, la syntaxe 'setx var=cmd args...' est supportée aussi syntaxe 2: setx -a array cmd initialiser le tableau $1 avec le résultat de la commande "$2..@", chaque ligne du résultat étant un élément du tableau note: en principe, la syntaxe est 'setx -a array cmd args...'. cependant, la syntaxe 'setx -a array=cmd args...' est supportée aussi }}} !! {{{evalx}}} {{{ Implémenter une syntaxe lisible et naturelle permettant d'enchainer des traitements sur une valeur. Par exemple, la commande evalx cmd1... // cmd2... // cmd3... affiche le résultat de la commande "$(cmd3 $(cmd2 $(cmd1)))" Retourner le dernier code d'erreur non nul, ou 0 si toutes les commandes se sont exécutées sans erreur. }}} !! {{{setxx}}} {{{ équivalent à setx $1 evalx $2..@ }}} !! {{{evalp}}} {{{ Implémenter une syntaxe alternative permettant d'enchainer des traitements sur un flux de données. Par exemple, la commande evalp cmd1... // cmd2... // cmd3... affiche le résultat de la commande "$(cmd1 | cmd2 | cmd3)" Typiquement, cette fonction permet de faciliter la construction d'un enchainement de commandes par programme, ou de faciliter l'utilisation de la fonction setx() pour récupérer le résultat d'un enchainement. Dans les autres cas, il est plus simple et naturel d'écrire les enchainements avec la syntaxe de bash. }}} !! {{{setxp}}} {{{ équivalent à setx $1 evalp $2..@ }}} !! {{{testx}}} {{{ Faire un test unaire avec la commande [ sur une valeur calculée avec evalx. Utiliser la syntaxe 'testx op cmds...' e.g. testx -z cmd1 // cmd2 }}} !! {{{test2x}}} {{{ Faire une test binaire avec la commande [ entre une valeur spécifiée et une valeur calculée avec evalx. Utiliser la syntaxe 'test2x value op cmds...' e.g. test2x value == cmd1 // cmd2 }}} !! {{{testrx}}} {{{ Faire une test binaire avec la commande [[ entre une valeur spécifiée et une valeur calculée avec evalx. Utiliser la syntaxe 'testrx value op cmds...' e.g. testrx value == cmd1 // cmd2 }}} !! {{{testp}}} {{{ Faire un test unaire avec la commande [ sur une valeur calculée avec evalp. Utiliser la syntaxe 'testp op cmds...' e.g. testp -z cmd1 // cmd2 }}} !! {{{test2p}}} {{{ Faire une test binaire avec la commande [ entre une valeur spécifiée et une valeur calculée avec evalp. Utiliser la syntaxe 'test2p value op cmds...' e.g. test2p value == cmd1 // cmd2 }}} !! {{{testrp}}} {{{ Faire une test binaire avec la commande [[ entre une valeur spécifiée et une valeur calculée avec evalp. Utiliser la syntaxe 'testrp value op cmds...' e.g. testrp value == cmd1 // cmd2 }}} !! {{{err2out}}} {{{ lancer la commande $@ en redirigeant la sortie d'erreur sur la sortie standard }}}