Re: hs: petite question script bash

2018-03-27 Par sujet Daniel Caillibaud
Le 21/03/18 à 20:40, raphael.poite...@gmail.com (Raphaël POITEVIN) a écrit :
RP> Pour moi c’est propre !

J'ajouterais quand même un 

  # devrait se trouver au début de tout script bash, pour planter si on
  # utilise une variable non déclarée
  set -u

et du coup plus loin, un ${1-} pour initialiser la variable "1" à "" si
elle n'existe pas (${foo-bar} vaut $foo si la variable existe,
indépendamment de sa valeur, et "bar" sinon)

  case ${1-}
foo)
  # du code pour $1 == "foo"
;;

bar|"bla bla")
  # du code pour $1 == "bar" ou $1 == "bla bla"
;;

*)
  # du code pour tous les autres cas
;;
  esac

-- 
Daniel

S'il est impossible de ne pas penser à quelque chose, il 
reste encore possible de penser à autre chose.
Lewis Carroll



Re: hs: petite question script bash

2018-03-21 Par sujet Raphaël POITEVIN
Jérémy PREGO  writes:
> merci pour ça, mais du coup dans le *, je vais devoir mettre mes trois
> fonction l'une après l'autre, pour qu'elles soient exécutés, si je
> n'entre aucun paramètre.
>
> si c'est un moyen propre, je vais l'adopter :)

Pour moi c’est propre !
-- 
Raphaël



Re: hs: petite question script bash

2018-03-21 Par sujet yahoo

Le 21/03/2018 à 16:22, Jérémy PREGO a écrit :
> Le 21/03/2018 à 15:52, yahoo a écrit :
>>
>> Bonjour
>>
>> en bash tu peux utiliser case.
>>
>> /case $1 in
>> /
>>
>> /    "")/
>>
>> /                ton code/
>>
>> /    ;;/
>>
>> /    "")/
>>
>> /        ton code//
>> /
>>
>> /    ;;/
>>
>> /    *)/
>>
>> /        si aucune option ou rien qui ne corresponde au choix ci-dessus//
>> /
>>
>> /    ;;/
>>
>> /esac/
>>
>>
> merci pour ça, mais du coup dans le *, je vais devoir mettre mes trois
> fonction l'une après l'autre, pour qu'elles soient exécutés, si je
> n'entre aucun paramètre.
>
> si c'est un moyen propre, je vais l'adopter :)
>
> jerem
>> Le 21/03/2018 à 15:40, Jérémy PREGO a écrit :
>>> bonjour,
>>>
>>> est-ce qu'il exite un moyen simple en bash d'exécuter une partie
>>> d'un script en fonction du paramètre $1 et si il y a pas de
>>> paramètre, exécuter tout le script ?
>>>
>>> j'ai bien pensé faire des fonctions et faire une condition genre:
>>> if [ $1 == "contenue de $1" ]; then
>>> fonction1
>>> fi
>>>
>>> je suis convaincu qu'il y a plus propre que ça, avec un système que
>>> je ne connais pas encore.
>>>
>>> merci pour l'aide apportée
>>>
>>> jerem
>>>
>>
>

Je ne sais pas si c'est le moyen le plus propre :)

mais j'ai toujours vue cette solution pour les scripts d'init

par exemple, dans les script l'option restart contient souvent l'appel
de la fonction do_stop suivi de do_start,

donc tu peux mettre autant de fonctions que tu veux pour chaque cas de case.



Re: hs: petite question script bash

2018-03-21 Par sujet Jérémy PREGO

Le 21/03/2018 à 15:52, yahoo a écrit :


Bonjour

en bash tu peux utiliser case.

/case $1 in
/

/    "")/

/                ton code/

/    ;;/

/    "")/

/        ton code//
/

/    ;;/

/    *)/

/        si aucune option ou rien qui ne corresponde au choix ci-dessus//
/

/    ;;/

/esac/


merci pour ça, mais du coup dans le *, je vais devoir mettre mes trois 
fonction l'une après l'autre, pour qu'elles soient exécutés, si je 
n'entre aucun paramètre.


si c'est un moyen propre, je vais l'adopter :)

jerem

Le 21/03/2018 à 15:40, Jérémy PREGO a écrit :

bonjour,

est-ce qu'il exite un moyen simple en bash d'exécuter une partie d'un 
script en fonction du paramètre $1 et si il y a pas de paramètre, 
exécuter tout le script ?


j'ai bien pensé faire des fonctions et faire une condition genre:
if [ $1 == "contenue de $1" ]; then
fonction1
fi

je suis convaincu qu'il y a plus propre que ça, avec un système que 
je ne connais pas encore.


merci pour l'aide apportée

jerem







Re: hs: petite question script bash

2018-03-21 Par sujet yahoo
Bonjour

en bash tu peux utiliser case.

/case $1 in
/

/    "")/

/                ton code/

/    ;;/

/    "")/

/        ton code//
/

/    ;;/

/    *)/

/        si aucune option ou rien qui ne corresponde au choix ci-dessus//
/

/    ;;/

/esac/


C'est la solution utilisé dans les script sysvinit, souvent dans la
partie *) on met un affichage sur la sortie standard pour afficher
l'usage de la commande,

mais tu peux mettre ce que tu veux.



Le 21/03/2018 à 15:40, Jérémy PREGO a écrit :
> bonjour,
>
> est-ce qu'il exite un moyen simple en bash d'exécuter une partie d'un
> script en fonction du paramètre $1 et si il y a pas de paramètre,
> exécuter tout le script ?
>
> j'ai bien pensé faire des fonctions et faire une condition genre:
> if [ $1 == "contenue de $1" ]; then
> fonction1
> fi
>
> je suis convaincu qu'il y a plus propre que ça, avec un système que je
> ne connais pas encore.
>
> merci pour l'aide apportée
>
> jerem
>