Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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 smile

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}"

wink
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 big_smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne