# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 ##@cooked nocomments module: base.bool "Fonctions de base: valeurs booléennes" function: is_yes 'retourner vrai si $1 est une valeur "oui"' function is_yes() { 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"' function is_no() { case "${1,,}" in n|non|no|f|faux|false|off) return 0;; esac isnum "$1" && [ "$1" -eq 0 ] && return 0 return 1 } function: normyesval 'remplacer les valeurs des variables $1..* par la valeur normalisée de leur valeur "oui"' function normyesval() { while [ $# -gt 0 ]; do is_yes "${!1}" && _setv "$1" 1 || _setv "$1" "" shift done } function: setb 'Lancer la commande $2..@ en supprimant la sortie standard. 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' function setb() { 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 }