##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 ## Fonctions de base: valeurs booléennes ##@cooked nocomments ##@include base.num # Note: contient du code spécifique à bash 4. Le module base.compat réimplémente # les fonctions concernées pour les rendre compatible avec bash >= 2.x uprovide base.bool urequire base.num function is_yes() { # retourner vrai si $1 est une valeur "oui" case "${1,,}" in o|oui|y|yes|v|vrai|t|true|on) return 0;; esac isnum "$1" && [ "$1" -ne 0 ] && return 0 return 1 } function is_no() { # retourner vrai si $1 est une valeur "non" case "${1,,}" in n|non|no|f|faux|false|off) return 0;; esac isnum "$1" && [ "$1" -eq 0 ] && return 0 return 1 } function yesval() { # normaliser une valeur vraie: si $1 est une valeur "oui", afficher 1, sinon # afficher une chaine vide is_yes "$1" && echo 1 } function _setb() { # Lancer la commande $2..@ en supprimant l'affichage standard et d'erreur. Si la # commande retourne vrai, assigner la valeur 1 à la variable $1. Sinon, lui # assigner la valeur "" # note: en principe, la syntaxe est '_setb var cmd args...'. cependant, la # syntaxe '_setb var=cmd args...' est supportée aussi local __s_var="$1"; shift if [[ "$__s_var" == *=* ]]; then set -- "${__s_var#*=}" "$@" __s_var="${__s_var%%=*}" fi local __s_r if "$@" >&/dev/null; then eval "$__s_var=1" else __s_r=$? eval "$__s_var=" return $__s_r fi } function evalb() { # Lancer les commandes $@ avec evalx() en supprimant l'affichage standard et # d'erreur. Si les commandes retournent vrai, afficher 1. Sinon, afficher "" if evalx "$@" >&/dev/null; then echo 1 else return $? fi } function setb() { # équivalent à setx $1 evalb $2..@ local __s_var="$1"; shift if [[ "$__s_var" == *=* ]]; then set -- "${__s_var#*=}" "$@" __s_var="${__s_var%%=*}" fi setx "$__s_var" evalb "$@" }