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 21/09/2014, à 14:19

reivillo

[Résolu]?La Commande Case / Esac de Bash?

Bonjour @ Toutes, & Tous.

Je viens vous demander une aide au sujet de la commande case / esac de Bash.
Depuis lui avoir été infidèle des mois, j'ai perdu beaucoup de repaires.
Donc voici le cœur du sujet:
Je souhaiterai une sortie Valide pour un Champs d' ENTRY, allant de ENTRY >= 10 à ENTRY <= 100,
et c'est là, que mes neurones font du zèle, ou la grève!(allez savoir...)

Je vous remerci par avance pour votre aide.

Reivillo.

#!/bin/bash

ENTRY=10

case $ENTRY in 
	*[10 - 100]) echo "Valide";;
	*) echo "Invalide"
esac

Dernière modification par reivillo (Le 21/09/2014, à 19:56)


Version LinuxMint 13 (maya-mate(32-bit)) LTS Noyau 3.2.0-39-generic (06-04-2013)
Sur http://www.linuxmint.com/edition.php?id=103

Hors ligne

#2 Le 21/09/2014, à 16:13

pingouinux

Re : [Résolu]?La Commande Case / Esac de Bash?

Bonjour,
Sans case

((ENTRY>=10 && ENTRY<=100)) && echo "Valide" || echo "Invalide"

Hors ligne

#3 Le 21/09/2014, à 16:29

reivillo

Re : [Résolu]?La Commande Case / Esac de Bash?

Bonjour pingouinux.

Merci pour ta Réponse.
Bien sûr, je peut le faire d'autres façons...
Mais je Chercher la Syntaxe pour Case, spécifiquement.
Je pense pourtant l'avoir déjà vu.


Version LinuxMint 13 (maya-mate(32-bit)) LTS Noyau 3.2.0-39-generic (06-04-2013)
Sur http://www.linuxmint.com/edition.php?id=103

Hors ligne

#4 Le 21/09/2014, à 16:54

pingouinux

Re : [Résolu]?La Commande Case / Esac de Bash?

Je n'ai pas trouvé plus joli, mais tu as déjà dû y penser.

case $ENTRY in
     10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100) echo Valide;;
     *) echo Invalide
esac

Tu peux générer la liste de nombres ainsi :

seq 10 100 | tr "\n" "|" | sed 's/.$/)\n/'

Hors ligne

#5 Le 21/09/2014, à 17:07

reivillo

Re : [Résolu]?La Commande Case / Esac de Bash?

Mais c'est vraiment pas Beau, tu en conviendras...
Je continue mes recherches.


Version LinuxMint 13 (maya-mate(32-bit)) LTS Noyau 3.2.0-39-generic (06-04-2013)
Sur http://www.linuxmint.com/edition.php?id=103

Hors ligne

#6 Le 21/09/2014, à 17:34

pingouinux

Re : [Résolu]?La Commande Case / Esac de Bash?

case $ENTRY in
     [1-9][0-9]|100) echo Valide;;
     *) echo Invalide
esac

Hors ligne

#7 Le 21/09/2014, à 18:14

reivillo

Re : [Résolu]?La Commande Case / Esac de Bash?

Merci.
Je pense que tu y es...
J'essaye maintenant (de comprendre ta Syntaxe)pour 200, au lieu de 100.
(je ne sais pas pourquoi j'ai mis 100, dans ma Question, m'enfin...)


Version LinuxMint 13 (maya-mate(32-bit)) LTS Noyau 3.2.0-39-generic (06-04-2013)
Sur http://www.linuxmint.com/edition.php?id=103

Hors ligne

#8 Le 21/09/2014, à 19:18

pingouinux

Re : [Résolu]?La Commande Case / Esac de Bash?

Pour 200, on peut adapter la commande ci-dessus

     [1-9][0-9]|1[0-9][0-9]|200) echo Valide;;

Ou alors, en trichant (utilisation inutile du case) smile

case $ENTRY in
     *) ((ENTRY>=10 && ENTRY<=200)) && echo Valide || echo Invalide
esac

Hors ligne

#9 Le 21/09/2014, à 19:54

reivillo

Re : [Résolu]?La Commande Case / Esac de Bash?

Encore Merci, pour le temps que tu as consacré à ce sujet.

J'adopte donc ceci:

Pour 200, on peut adapter la commande ci-dessus

     [1-9][0-9]|1[0-9][0-9]|200) echo Valide;;

Je mets [Résolu], en bout de titre,
à moins qu'il y a une manip dédiée à cela.(pas vu!)

Bonne soirée.


Version LinuxMint 13 (maya-mate(32-bit)) LTS Noyau 3.2.0-39-generic (06-04-2013)
Sur http://www.linuxmint.com/edition.php?id=103

Hors ligne