71 lines
2.0 KiB
Plaintext
71 lines
2.0 KiB
Plaintext
|
##@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 "$@"
|
||
|
}
|