diff --git a/README.md b/README.md index b768a57..5094a5b 100644 --- a/README.md +++ b/README.md @@ -5,25 +5,27 @@ http://www.quennec.fr/contact SHA256SUM --------- -825e356515bba1e73438092fa3d6f8157c3d858a5061bcb1d6eeff4ec6beee63 ./anagramme.sh -3dd10d993f6a360b16f2d1f00e356e19a8fb05dcfeff20a7f00dfd16e55c58df ./anagramme.sh.asc -79860ca3dde5fefe6f949eb496f000a904c642e4d40be5f6a71a48f8c798a245 ./configure_bind9.sh -11f683f0a65dce09cfd5432e0debde8950f11d1baaaae2847d5ee26e12e166b4 ./configure_bind9.sh.asc -b3f941eb2e661fed193acf26481e3f4f661bb05043beae220c0362e9b44a9d7f ./curl.igalerie.php -364128d323768b28a39dac856ae4a88bdf583d7d00b46d95ccd7a3cf7194a1c6 ./curl.igalerie.php.asc -f4a779cfcaa0df84a47a3e74d76c8747998bc2adc2d215d5f466450a4092ee3c ./getInetAddr.sh -7ea71784d7f8df60e64e525df67812ee59883f29c335d26a1b2096193ac09f0e ./getInetAddr.sh.asc -cdab7e11b499cdae1305b081497b7561efbc31d35c5d69cb2d8acc6a3b35e44d ./liste.de.mots.francais.frgut.txt.iso-8859-1 -a3806b0da36a73bdad0307d603fd0aa38476dcc324fb4c10537c769174989295 ./liste.de.mots.francais.frgut.txt.iso-8859-1.asc -d014d66f757f7922125ed57688b0c118ec372b22c140dc2784a276cdc82e9da1 ./liste.de.mots.francais.frgut.txt.utf-8 -caa261fda25fa5548cae58a69dd83b88e9e509b1788ebe4d0848e87bd85ae577 ./liste.de.mots.francais.frgut.txt.utf-8.asc -2600bb3da6ca9d0098618631de344a657915cec298ab46efdf51555769c2d617 ./pgcd.sh -f347092852f62f2c48433436782262fe9f3e669cb502fdb20b5bdc24e8a568ae ./pgcd.sh.asc -ee41f2901353c16738932a090a82a2e8a631e3c6526ac6a0325ee29bb99eb2af ./rechercheDoublons.sh -00a200a373e8c72e289fed84ce716640b6a37d79c409dd470da69a1a45c0fcd7 ./rechercheDoublons.sh.asc -3bc9fd6d5d92c84c6b7672ee1db4e9f97c3bf34eb9176c6ca393a29e2bb9b311 ./ronan@quennec.fr.gpg -0694b4cff027ac727eaad1ce9cac481c10d542d3375f03a220bd7a0312d7800a ./syllabes.sh -df2dfd675abb0742ff838fe0467776f3c1d06c6829bfd905dbd663356640c18a ./syllabes.sh.asc +825e356515bba1e73438092fa3d6f8157c3d858a5061bcb1d6eeff4ec6beee63 anagramme.sh +3dd10d993f6a360b16f2d1f00e356e19a8fb05dcfeff20a7f00dfd16e55c58df anagramme.sh.asc +79860ca3dde5fefe6f949eb496f000a904c642e4d40be5f6a71a48f8c798a245 configure_bind9.sh +11f683f0a65dce09cfd5432e0debde8950f11d1baaaae2847d5ee26e12e166b4 configure_bind9.sh.asc +b3f941eb2e661fed193acf26481e3f4f661bb05043beae220c0362e9b44a9d7f curl.igalerie.php +364128d323768b28a39dac856ae4a88bdf583d7d00b46d95ccd7a3cf7194a1c6 curl.igalerie.php.asc +f4a779cfcaa0df84a47a3e74d76c8747998bc2adc2d215d5f466450a4092ee3c getInetAddr.sh +7ea71784d7f8df60e64e525df67812ee59883f29c335d26a1b2096193ac09f0e getInetAddr.sh.asc +cdab7e11b499cdae1305b081497b7561efbc31d35c5d69cb2d8acc6a3b35e44d liste.de.mots.francais.frgut.txt.iso-8859-1 +a3806b0da36a73bdad0307d603fd0aa38476dcc324fb4c10537c769174989295 liste.de.mots.francais.frgut.txt.iso-8859-1.asc +d014d66f757f7922125ed57688b0c118ec372b22c140dc2784a276cdc82e9da1 liste.de.mots.francais.frgut.txt.utf-8 +caa261fda25fa5548cae58a69dd83b88e9e509b1788ebe4d0848e87bd85ae577 liste.de.mots.francais.frgut.txt.utf-8.asc +2600bb3da6ca9d0098618631de344a657915cec298ab46efdf51555769c2d617 pgcd.sh +f347092852f62f2c48433436782262fe9f3e669cb502fdb20b5bdc24e8a568ae pgcd.sh.asc +ee41f2901353c16738932a090a82a2e8a631e3c6526ac6a0325ee29bb99eb2af rechercheDoublons.sh +00a200a373e8c72e289fed84ce716640b6a37d79c409dd470da69a1a45c0fcd7 rechercheDoublons.sh.asc +3bc9fd6d5d92c84c6b7672ee1db4e9f97c3bf34eb9176c6ca393a29e2bb9b311 ronan@quennec.fr.gpg +0694b4cff027ac727eaad1ce9cac481c10d542d3375f03a220bd7a0312d7800a syllabes.sh +df2dfd675abb0742ff838fe0467776f3c1d06c6829bfd905dbd663356640c18a syllabes.sh.asc +c30a4343a66aeef47c6bd6a9dfefa3e0d618e8c960a64878d643bdb3378eb936 functions.inc +afa9d91fac7b8317c47d18f054f512107cd5034de4c69b5672962e6b1d564103 functions.inc.asc syllabes.sh ============= @@ -146,4 +148,8 @@ Exécution ./getInetAddr.sh ``` +functions.inc +=== + +Ce script contient plusieurs fonctions qui permettent de manipuler les variables. diff --git a/functions.inc b/functions.inc new file mode 100644 index 0000000..1c529c9 --- /dev/null +++ b/functions.inc @@ -0,0 +1,405 @@ +doubleval(){ + # Alias de la fonction floatval + # + # EXECUTION + # ========= + # doubleval "$var" + # + # RETOUR + # ====== + # Retourne la valeur flottante de la variable donnée ou 0 en cas d'erreur + # + floatval "$1" +} + +empty(){ + # Détermine si une variable est vide + # + # EXECUTION + # ========= + # empty "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + typeset VAR=$(sed "s/ //g" <<< "$1") + ( [ -z "$VAR" ] || grep -E -q '^0*.?0+$' <<< "$VAR" ) && return 0 || return 1 +} + +floatval(){ + # Convertit une chaine en nombre à virgule flottante + # Une donnée numérique valide est un signe optionnel, suivi par un ou plusieurs + # chiffres, suivi par un point décimal optionnel, suivi par un ou plusieurs + # chiffres optionnels, suivi par un exposant optionnel. + # Un exposant est représenté par la lettre 'e' ou 'E', suivi d'un signe optionnel, + # suivi d'un ou plusieurs chiffres. + # 10 / 10.5 / -5.7 / 10. / 4e5 / 5.6E7 + # + # EXECUTION + # ========= + # floatval "$var" + # + # RETOUR + # ====== + # Retourne la valeur flottante de la variable donnée ou 0 en cas d'erreur + # + typeset VAR=$(grep -E -o '^-?[0-9]*\.?[0-9]+((e|E)-?[0-9]+)?' <<< "$1") + if [ -n "$VAR" ]; then + VAR=$(sed -r 's/(e|E)/\*10\^/g' <<< "$VAR") + calcul "1*$VAR" + return 0 + fi + echo 0 && return 1 +} + +intval(){ + # Retourne la valeur numérique entière équivalente d'une variable + # + # EXECUTION + # ========= + # intval "$var" + # + # RETOUR + # ====== + # Retourne une valeur de type entier en cas de succès ou 0 en cas d'erreur. + # + typeset VAR=$(grep -E -o '^-?[0-9]+' <<< "$1") + if [ -n "$VAR" ]; then + calcul "1*$VAR" + return 0 + fi + echo 0 && return 1 +} + +is_array(){ + # Détermine si la variable donnée est un tableau. + # + # EXECUTION + # ========= + # array=(a b c d e f) + # is_array "${array[@]}" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + typeset VAR=("$@") + if empty ${VAR[*]}; then + return 1 + elif [ ${#VAR[*]} -ge 1 ]; then + return 0 + else + return 1 + fi +} + +is_bool(){ + # Détermine si la variable est un booléen + # + # EXECUTION + # ========= + # is_bool "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + grep -E -q -i '^(true|false|1|0)$' <<< "$1" && return 0 || return 1 +} + +is_callable(){ + # Détermine si la variable est une commande + # + # EXECUTION + # ========= + # is_callable "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + type $1 >/dev/null 2>&1 && return 0 || return 1 +} + +is_double(){ + # Alias de la fonction is_float + # + # EXECUTION + # ========= + # is_double "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + is_float "$1" +} + +is_float(){ + # Détermine si une variable est de type nombre décimal + # + # EXECUTION + # ========= + # is_float "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + grep -E -q '^-?[0-9]*\.[0-9]+((e|E)-?[0-9]+)?$' <<< "$1" && return 0 || return 1 +} + +is_int(){ + # Détermine si une variable est de type nombre entier. + # + # EXECUTION + # ========= + # is_int "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + grep -E -q '^-?[0-9]+$' <<< "$1" && return 0 || return 1 +} + +is_integer(){ + # Alias de la fonction is_int + # + # EXECUTION + # ========= + # is_integer "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + is_int "$1" +} + +is_long(){ + # Alias de la fonction is_int + # + # EXECUTION + # ========= + # is_long "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + is_int "$1" +} + +is_numeric(){ + # Détermine si une variable est un type numérique + # + # EXECUTION + # ========= + # is_numeric "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + grep -E -q '^(\+|-)?[0-9]*\.?[0-9]+((e|E)-?[0-9]+)?$' <<< "$1" && return 0 || return 1 +} + +is_real(){ + # Alias de la fonction is_float + # + # EXECUTION + # ========= + # is_real "$var" + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur. + # + is_float "$1" +} + +calcul(){ + # Calcul le résultat de l'opération passée en paramètre + # à l'aide de la commande bc + # Pour installer la commande bc : sudo apt-get install bc + # + # EXECUTION + # ========= + # calcul "5*4" + # calcul "(5*4/20)*2" + # var=$(calcul "5*4") + # + # RETOUR + # ====== + # Retourne le résultat de l'opération ou le code retour 1 en cas d'échec + # + ( echo "$1" | bc -l ) && return 0 || return 1 +} + +getdecsep(){ + # Retourne le séparateur décimal paramétré sur le sytème + # en fonction de la variable locale installée et définie par défaut. + # + # EXECUTION + # ========= + # getdecsep + # var=$(getdecsep) + # + # RETOUR + # ====== + # Retourne un point '.' ou une virgule ',' + # + ( printf "%1.1f" 1 | sed "s/[0-9]//g" ) && return 0 || return 1 +} + +commatodot(){ + # Remplace la virgule ',' par le point '.' dans les + # variables représentant des valeurs décimales. + # 10,5 --> 10.5 + # + # EXECUTION + # ========= + # commatodot "$var" + # var=$(commatodot "$var") + # + # RETOUR + # ====== + # Retourne la valeur remplacée en cas de succès ou le code erreur 1 en cas d'échec. + # + typeset VAR=$(sed "s/,/\./" <<< "$1") + is_float "$VAR" && ( echo "$VAR" && return 0 ) || return 1 +} + +dottocomma(){ + # Remplace le point '.' par la virgule ',' dans les + # variables représentant des valeurs décimales. + # 10.5 --> 10,5 + # + # EXECUTION + # ========= + # dottocomma "$var" + # var=$(dottocomma "$var") + # + # RETOUR + # ====== + # Retourne la valeur remplacée en cas de succès ou le code erreur 1 en cas d'échec. + # + is_float "$(commatodot "$1")" && ( sed "s/\./,/" <<< "$1" && return 0 ) || return 1 +} + +tolocaldecsep(){ + # Remplace le point '.' par le séparateur décimal + # paramétré sur le système dans les variables + # représentant des valeurs décimales. + # + # EXECUTION + # ========= + # tolocaldecsep "$var" + # var=$(tolocaldecsep "$var") + # + # RETOUR + # ====== + # Retourne la valeur remplacée en cas de succès. + # La valeur 0 en cas d'erreur et le code retour 1. + # + if is_float "$(commatodot "$1")"; then + sed "s/\./$(getdecsep)/" <<< "$1" && return 0 + else + echo 0 && return 1 + fi +} + +prerequis(){ + # Test si la ou les commandes passées + # en paramètres sont bien installées + # sur le système. + # + # EXECUTION + # ========= + # prerequis vim grep ... + # if prerequis vim >/dev/null; then ...; fi + # prerequis vim >/dev/null && ... || ... + # + # RETOUR + # ====== + # Code retour 0 en cas de succès et 1 en cas d'erreur ainsi qu'un message explicatif. + # + typeset VAR + for VAR in "$@"; do + which "$VAR" >/dev/null || ( echo -e "Le programme '$VAR' n'est pas encore installé.\n\ +Vous pouvez l'installer en tapant : \n\ +sudo apt-get install $VAR" && return 1 ) + done +} + +getipv4(){ + # Extrait une ou plusieurs adresses IPV4 + # d'une chaine de caractères passée en paramètre. + # + # EXECUTION + # ========= + # RET=$(getipv4 "$VAR") + # + # RETOUR + # ====== + # Retourne une chaine contenant toutes + # les adresses IPV4 extraites de la chaine + # séparées par un espace. + # + typeset VAR=$(grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}' <<< "$1") + typeset ADRIPV4="" + while read IPV4; do + ADRIPV4="$ADRIPV4 $IPV4" + done <<< "$VAR" + ADRIPV4=$(sed "s/^ //" <<< "$ADRIPV4") + echo "$ADRIPV4" && return 0 +} + +ltrim(){ + # Supprime tous les espaces à gauche + # + # EXECUTION + # ========= + # ltrim "$var" + # + # RETOUR + # ====== + # Retourne la valeur sans les espaces à gauche et le code retour 0. + # + typeset VAR=$(sed "s/^ *//g" <<< "$1") + echo "$VAR" && return 0 +} + +rtrim(){ + # Supprime tous les espaces à droite + # + # EXECUTION + # ========= + # rtrim "$var" + # + # RETOUR + # ====== + # Retourne la valeur sans les espaces à droite et le code retour 0. + # + typeset VAR=$(sed "s/ *$//g" <<< "$1") + echo "$VAR" && return 0 +} + +trim(){ + # Supprime tous les espaces à gauche et à droite + # + # EXECUTION + # ========= + # trim "$var" + # + # RETOUR + # ====== + # Retourne la valeur sans les espaces à gaucheet à droite et le code retour 0. + # + typeset VAR="$1" + VAR=$(ltrim "$VAR") + VAR=$(rtrim "$VAR") + echo "$VAR" && return 0 +} diff --git a/functions.inc.asc b/functions.inc.asc new file mode 100644 index 0000000..40b0f1f --- /dev/null +++ b/functions.inc.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQEcBAABAgAGBQJV7URzAAoJEIgCKezOqEu6wscH/iiyzfQif5MltRLWy0I9q9CZ +UIKk0v73Xhj7Xh5NRtJp7r9hgk1kSwVPAvBXTJJDLNhNQ8xN5WodMFGQn701SPk2 +wEGBMaimPu3KtczeW7zcsIZOc10YQ/k1J6Ovkj/aUlKDX8FzbTLfmJWF+hjI7OcW +cYHwjzIK5WvPjzzfA8EsHxrsEhLI0LmVaLzcnGWuRGLLaG1ImzzB0VGycf2PHlQL +eoSjx8G0p7LDevHLNlndBPlHlpiEFDFgHX6OFhj6tJjcjwpWxcbOxOqhGuxZw/Nu +RLuI2TBh3iBu1s8rZNrX5gfrWqzWYZrYw1P7vkZWupNEqI77RlE6DtpgXCGiLJg= +=IW1q +-----END PGP SIGNATURE-----