From 2e037cfa689670d0a01fc62421637f2211b54616 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Sat, 21 Oct 2023 19:49:20 +0400 Subject: [PATCH] ajout base.num et base.bool --- bash/src/base.bool.sh | 50 +++++++++++++++++++++++++++++++++++++++++++ bash/src/base.num.sh | 30 ++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 bash/src/base.bool.sh create mode 100644 bash/src/base.num.sh diff --git a/bash/src/base.bool.sh b/bash/src/base.bool.sh new file mode 100644 index 0000000..8ed84a7 --- /dev/null +++ b/bash/src/base.bool.sh @@ -0,0 +1,50 @@ +# -*- 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 +} diff --git a/bash/src/base.num.sh b/bash/src/base.num.sh new file mode 100644 index 0000000..b54e0ee --- /dev/null +++ b/bash/src/base.num.sh @@ -0,0 +1,30 @@ +# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 +##@cooked nocomments +module: base.num "Fonctions de base: gestion des valeurs numériques" + +function: isnum 'retourner vrai si $1 est une valeur numérique entière (positive ou négative)' +function isnum() { + [ ${#1} -gt 0 ] || return 1 + local v="${1#-}" + [ ${#v} -gt 0 ] || return 1 + v="${v//[0-9]/}" + [ -z "$v" ] +} + +function: ispnum 'retourner vrai si $1 est une valeur numérique entière positive' +function ispnum() { + [ ${#1} -gt 0 ] || return 1 + [ -z "${1//[0-9]/}" ] +} + +function: isrnum 'retourner vrai si $1 est une valeur numérique réelle (positive ou négative) +le séparateur décimal peut être . ou ,' +function isrnum() { + [ ${#1} -gt 0 ] || return 1 + local v="${1#-}" + [ ${#v} -gt 0 ] || return 1 + v="${v//./}" + v="${v//,/}" + v="${v//[0-9]/}" + [ -z "$v" ] +}