Problème case esac
Résolu/Fermé
Antoine_Mookoo
-
Modifié par jipicy le 24/05/2015 à 18:24
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 26 mai 2015 à 09:37
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 26 mai 2015 à 09:37
A voir également:
- Problème case esac
- Aller à la ligne dans une case excel - Guide
- Excel case choix multiple - Guide
- Supprimer case à cocher excel ✓ - Forum Excel
- Excel si une case contient un mot alors ✓ - Forum Excel
- Case à cocher open office - Forum LibreOffice / OpenOffice
6 réponses
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 807
25 mai 2015 à 19:00
25 mai 2015 à 19:00
Bon j'ai l'impression que ça fait ce que tu veux alors :
Script toto.sh
Ici je fais deux appels à la fonction. Le premier appel passe dans le 2e cas, le second appel passe dans le 1er cas.
fichier.txt :
Pour tester, j'ai utiliser le fichier suivant :
Exécution
On oublie pas de mettre les droits en lecture et en exécution sur toto.sh, sinon il faut l'exécuter avec la commande
Résultat
Le résultat est conforme a ce que je t'ai annoncé dans mon précédent message.
Bonne chance
Script toto.sh
#!/bin/bash add() { if [ "$#" = "5" ] ; then case "$1" in [1-6]) site="$1" ;; *) if [ "$(grep -c $1 fichier.txt)" -eq 1 ] ; then site="$(grep -n $1 fichier.txt)" fi ;; esac fi } # Premier appel add comment b c d e echo "site = $site" # Deuxieme appel add 1 b c d e echo "site = $site" exit 0
Ici je fais deux appels à la fonction. Le premier appel passe dans le 2e cas, le second appel passe dans le 1er cas.
fichier.txt :
Pour tester, j'ai utiliser le fichier suivant :
www.google.fr
www.commentcamarche.net
www.yahoo.fr
Exécution
On oublie pas de mettre les droits en lecture et en exécution sur toto.sh, sinon il faut l'exécuter avec la commande
bash toto.sh(et il faut alors seulement les droits en lecture).
chmod a+rx toto.sh
./toto.sh
Résultat
Le résultat est conforme a ce que je t'ai annoncé dans mon précédent message.
site = 2:www.commentcamarche.net
site = 1
Bonne chance
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 807
24 mai 2015 à 20:15
24 mai 2015 à 20:15
Ce n'est pas tout simplement qu'il manque les
https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html
Par ailleurs pour les tests sur des valeurs numériques j'aurais plutôt utilisé
https://stackoverflow.com/questions/13086109/check-if-bash-variable-equals-0
Bonne chance
;;qui font office de break à la fin de chaque cas ?
https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html
Par ailleurs pour les tests sur des valeurs numériques j'aurais plutôt utilisé
-eq.
https://stackoverflow.com/questions/13086109/check-if-bash-variable-equals-0
Bonne chance
J'avais déjà essayé comme ceci, mais même avec ces modifications, le problème subsiste... J'obtiens exactement la même réponse.
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 807
24 mai 2015 à 22:55
24 mai 2015 à 22:55
Quel est le but de la fonction ?
Car là ce que tu as écrit c'est :
- si ma fonction reçoit 5 arguments
- si le premier argument vaut un entier entre 1 et 6, alors site prend la valeur du premier argument
- sinon on cherche si le premier argument est dans fichier.txt, et si on le trouve exactement une fois, alors on reporte le numéro de ligne et la ligne correspondante.
Vu d'ici ça paraît bizarre :-)
Car là ce que tu as écrit c'est :
- si ma fonction reçoit 5 arguments
- si le premier argument vaut un entier entre 1 et 6, alors site prend la valeur du premier argument
- sinon on cherche si le premier argument est dans fichier.txt, et si on le trouve exactement une fois, alors on reporte le numéro de ligne et la ligne correspondante.
Vu d'ici ça paraît bizarre :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui, c'est exactement le but recherché. La fonction n'est pas terminée, ce n'est qu'un début. Il s'agit pour l'instant de renvoyer le numéro d'une ligne d'un fichier soit en inscrivant directement en premier argument le numéro de la ligne, soit en identifiant la ligne par un mot ou une expression contenue dans cette ligne. Les quatre arguments suivant serviront à autre chose. Mais j'aurais aimé tester cette partie de la fonction pour le moment.
Merci beaucoup pour ta réponse ! Mais je viens tout juste de régler mon problème, sans pour autant le comprendre... En fait, lorsque je colle mon code dans la console, il faut que je supprime toutes les tabulations. Résultat : mon code n'est plus indenté, mais il fonctionne. :)
En tout cas, merci pour ton aide.
En tout cas, merci pour ton aide.
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 807
26 mai 2015 à 09:37
26 mai 2015 à 09:37
De toute façon je pense que tu as meilleur temps de coder directement dans un fichier, car sinon la seule trace de ton travail sera ton historique... :-)
Bonne continuation
Bonne continuation