151 lines
4.6 KiB
Plaintext
151 lines
4.6 KiB
Plaintext
|
# -*- 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
|
||
|
}}}
|