#1 Le 04/10/2010, à 23:39
- Hizoka
[résolu] création d'une fonction de vérification en bash
Bonsoir,
j'ai un script comporttant certaines actions répétitive, je voudrais utiliser une fonction, mais là j'ai un peu de mal
soit :
function _calendrier_hauteur()
{
# Vérifie que la variable est différente de 0
[[ ${@%.*} != 0 ]] && calendrier_hauteur=${@%.*} || unset calendrier_hauteur
}
function _calendrier_largeur()
{
# Vérifie que la variable est différente de 0
[[ ${@%.*} != 0 ]] && calendrier_largeur=${@%.*} || unset calendrier_largeur
}
et je voudrais un truc du genre :
function verif()
{
# Vérifie que la variable est différente de 0
[[ ${1%.*} != 0 ]] && ${2}=${@%.*} || unset ${2}
}
function _calendrier_hauteur() { verif "${@}" calendrier_hauteur ; }
function _calendrier_largeur() { verif "${@}" calendrier_largeur ; }
mais bien évidemment ça, ça marche pas
enfin voilà, si vous avez une idée de comment simplifier le truc...
merci !
Dernière modification par Hizoka (Le 05/10/2010, à 04:12)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#2 Le 05/10/2010, à 00:25
- AnsuzPeorth
Re : [résolu] création d'une fonction de vérification en bash
C'est un truc du genre que tu veux ?
~$ verif() { export ${1}='truc'; }
~$ verif var
~$ echo $var
truc
et sinon, y a aussi dans d'autres usages
${!var}
mais tu dois connaitre !
Dernière modification par AnsuzPeorth (Le 05/10/2010, à 00:27)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#3 Le 05/10/2010, à 01:06
- Hizoka
Re : [résolu] création d'une fonction de vérification en bash
ouais mais je suis un peu paumé...
avec un exemple :
function _calendrier_hauteur() { [[ ${@%.*} != 0 ]] && calendrier_hauteur=${@%.*} || unset calendrier_hauteur; }
function _calendrier_largeur() { [[ ${@%.*} != 0 ]] && calendrier_largeur=${@%.*} || unset calendrier_largeur; }
_calendrier_hauteur 20.00
_calendrier_largeur 60.00
nous donne donc :
calendrier_hauteur=20
calendrier_largeur=60
mais j'arrive pas à regrouper les points communs dans une fonction...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 05/10/2010, à 01:26
- AnsuzPeorth
Re : [résolu] création d'une fonction de vérification en bash
~$ calendrier() { [[ ${2%.*} != 0 ]] && export ${1}=${2%.*} || export ${1}=; }
~$ calendrier hauteur 20.00
~$ echo $hauteur
20
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#5 Le 05/10/2010, à 02:41
- Watael
Re : [résolu] création d'une fonction de vérification en bash
en utilisant une indirection, comme suggéré plus haut par AnsuzPeorth
verif() { (( ${!1%.*} != 0 )) && export ${1}=${!1%.*} || unset ${1}; }
hauteur=20.00
largeur=0.20
verif hauteur #pas de signe dollar
echo $hauteur
20
verif largeur #pas de signe dollar
echo ${largeur:-que dalle}
que dalle
Dernière modification par Watael (Le 05/10/2010, à 02:44)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 05/10/2010, à 04:12
- Hizoka
Re : [résolu] création d'une fonction de vérification en bash
merci beaucoup à vous deux !!
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#7 Le 05/10/2010, à 07:48
- Totor
Re : [résolu] création d'une fonction de vérification en bash
Bonjour,
je pense que tu te compliques les choses :
verif() { set -- ${1%.*}; (( ${1} != 0 )) && echo ${1}; }
hauteur=$(verif ${hauteur})
largeur=$(verif ${largeur})
Dernière modification par Totor (Le 05/10/2010, à 08:13)
-- Lucid Lynx --
Hors ligne
#8 Le 05/10/2010, à 11:45
- AnsuzPeorth
Re : [résolu] création d'une fonction de vérification en bash
je pense que tu te compliques les choses :
Bien vu ....
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#9 Le 05/10/2010, à 18:47
- Hizoka
Re : [résolu] création d'une fonction de vérification en bash
j'ai franchement du mal avec set,
tu peux m'expliquer avec un exemple plus simple stp :
genre :
a="language=fre track_name=Commentaires\sRichard\sRoxburgh default_track=0 forced_track=0"
comment utiliser set, pour qu'il comprenne que language vaut fre...
merci
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#10 Le 05/10/2010, à 19:14
- AnsuzPeorth
Re : [résolu] création d'une fonction de vérification en bash
~$ set -- 1 5 12
~$ echo $1 $2 $3
1 5 12
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#11 Le 05/10/2010, à 19:31
- Totor
Re : [résolu] création d'une fonction de vérification en bash
tu ne peux pas valoriser de variable utilisateur
avec set, tu ne peux que valoriser les paramètres de position. ( i.e $1, $2, $3...$i )
dans ma réponse set -- ${1%.*} , je redéfini $1 sans le pattern .* (donc $1=${1%.*}. Cela évite de refaire l'expansion plusieurs fois (comme ceci : verif() { (( ${1%.*} != 0 )) && echo ${1%.*}; }).
Le "--" permet de dire que c'est la fin des options spécifiques à l'instruction set.
En effet, tu peux très bien souhaiter redéfinir un paramètre de position avec la valeur -a. Or -a est aussi une option de set.
Dans ce cas, si tu utilises set -a le bash ne peut savoir que -a est la valeur à donner au paramètre n°1. C'est pour cela que l'on utilise --
A savoir : set -- -a
-- Lucid Lynx --
Hors ligne
#12 Le 05/10/2010, à 19:33
- Hizoka
Re : [résolu] création d'une fonction de vérification en bash
ouais c'est bien ce que j'avais trouvé, en fait, je cherchais un equivalent à source mais pour une variable (source variable) qui contiendrait des variables...
merci pour les explications.
Dernière modification par Hizoka (Le 05/10/2010, à 19:34)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#13 Le 05/10/2010, à 19:37
- Totor
Re : [résolu] création d'une fonction de vérification en bash
rien de bien compliqué :
a="language=fre track_name=Commentaires\sRichard\sRoxburgh default_track=0 forced_track=0"
eval "${a}"
Par contre, il faut protéger les \
Dernière modification par Totor (Le 05/10/2010, à 21:12)
-- Lucid Lynx --
Hors ligne
#14 Le 05/10/2010, à 19:38
- Hizoka
Re : [résolu] création d'une fonction de vérification en bash
je n'arrivais pas à retrouver le nom de la commande... merci
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne