Script
Fermé
mimi
-
12 déc. 2006 à 15:56
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 12 déc. 2006 à 22:43
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 12 déc. 2006 à 22:43
A voir également:
- Script
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
- Script download - Télécharger - Édition & Programmation
7 réponses
comme tu y a passé plusieurs heures , tu dois bien avoir fait quelque chose ; par exemple la lecture/verification des arguments ou la lecture du fichier.
Montre nous ce que tu as fais si tu veux de l'aide (on ne va pas et faire ton exercice).
Montre nous ce que tu as fais si tu veux de l'aide (on ne va pas et faire ton exercice).
<#!/home/knoppix/quizz.sh
element1=$(expr "abcd,efgh" : "\(.*\),.*") && element2=(expr "abcd,efgh" : ".*,\(.*\)")
read a
if
a='-v'
echo "Quel est le pays qui a pour capitale $element1 ?"
else if
a='-p'
echo "Quel est la capitale du $element2 ?"
else
echo "Vous devez taper soit -v ville soit -p pays."#!/home/knoppix/quizz.sh
element1=$(expr "abcd,efgh" : "\(.*\),.*") && element2=(expr "abcd,efgh" : ".*,\(.*\)")
read a
if
a='-v'
echo "Quel est le pays qui a pour capitale $element1 ?"
else if
a='-p'
echo "Quel est la capitale du $element2 ?"
else
echo "Vous devez taper soit -v ville soit -p pays."
voilà ce que j'ai tapé mais bien sur c'est faux, c'est nul etc...
Le problème c'est que je sais pas comment chargé une ligne de mon fichier texte et intégrer ces variables dans mon script.
J'ai pensé avec la commande grep mais je bloque...
element1=$(expr "abcd,efgh" : "\(.*\),.*") && element2=(expr "abcd,efgh" : ".*,\(.*\)")
read a
if
a='-v'
echo "Quel est le pays qui a pour capitale $element1 ?"
else if
a='-p'
echo "Quel est la capitale du $element2 ?"
else
echo "Vous devez taper soit -v ville soit -p pays."#!/home/knoppix/quizz.sh
element1=$(expr "abcd,efgh" : "\(.*\),.*") && element2=(expr "abcd,efgh" : ".*,\(.*\)")
read a
if
a='-v'
echo "Quel est le pays qui a pour capitale $element1 ?"
else if
a='-p'
echo "Quel est la capitale du $element2 ?"
else
echo "Vous devez taper soit -v ville soit -p pays."
voilà ce que j'ai tapé mais bien sur c'est faux, c'est nul etc...
Le problème c'est que je sais pas comment chargé une ligne de mon fichier texte et intégrer ces variables dans mon script.
J'ai pensé avec la commande grep mais je bloque...
#!/home/knoppix/quizz2.sh
element1=$(expr "*,*" : "\(.*\),.*") && element2=(expr "*,*" : ".*,\(.*\)")
grep $element1 /home/knoppix/capitales.txt
read a
a='-v $element1'
echo "Quel est le pays qui a pour capitale $element1" ?
read b
if b=$element1
then echo "ok"
else
echo "erreur"
exit<ital>#!/home/knoppix/quizz2.sh
element1=$(expr "*,*" : "\(.*\),.*") && element2=(expr "*,*" : ".*,\(.*\)")
grep $element1 /home/knoppix/capitales.txt
read a
a='-v $element1'
echo "Quel est le pays qui a pour capitale $element1" ?
read b
if b=$element1
then echo "ok"
else
echo "erreur"
exit</ital>
ça donne pas grand chose non plus...
ya personne qui pourrait me donner un petit coup de pouce (je demande pas comment tout faire mais 2-3petits trucs pour m'aider à me débrouiller ssvp)
merci
element1=$(expr "*,*" : "\(.*\),.*") && element2=(expr "*,*" : ".*,\(.*\)")
grep $element1 /home/knoppix/capitales.txt
read a
a='-v $element1'
echo "Quel est le pays qui a pour capitale $element1" ?
read b
if b=$element1
then echo "ok"
else
echo "erreur"
exit<ital>#!/home/knoppix/quizz2.sh
element1=$(expr "*,*" : "\(.*\),.*") && element2=(expr "*,*" : ".*,\(.*\)")
grep $element1 /home/knoppix/capitales.txt
read a
a='-v $element1'
echo "Quel est le pays qui a pour capitale $element1" ?
read b
if b=$element1
then echo "ok"
else
echo "erreur"
exit</ital>
ça donne pas grand chose non plus...
ya personne qui pourrait me donner un petit coup de pouce (je demande pas comment tout faire mais 2-3petits trucs pour m'aider à me débrouiller ssvp)
merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
12 déc. 2006 à 20:43
12 déc. 2006 à 20:43
Salut,
Tiens voilà un bout de code qui tient compte de tes exigences (mais pas dans toutes leurs finalités), à savoir ne pas tenir compte des accents et de la "casse" (majuscule/minuscule) dans les réponses fournies (mais pas dans le fichier texte contenant les Pays et Capitales, du moins pas en ce qui concerne les accents).
Il ne tient pas compte par contre du score et de son enregistrement...
;-))
Tiens voilà un bout de code qui tient compte de tes exigences (mais pas dans toutes leurs finalités), à savoir ne pas tenir compte des accents et de la "casse" (majuscule/minuscule) dans les réponses fournies (mais pas dans le fichier texte contenant les Pays et Capitales, du moins pas en ce qui concerne les accents).
Il ne tient pas compte par contre du score et de son enregistrement...
#!/bin/bash # Gestion des options et des paramètres while getopts ":p:v:" OPTION do case $OPTION in p) # gestion des capitales - option "p" echo "Quelle est la capitale du (de la) $2 ?" read reponse # Élimination des accents et des majuscules reponse_clean=$(echo $reponse | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"\ | tr "[:upper:]" "[:lower:]") # Affectation de la bonne réponse à la variable "capitale" capitale=$(grep -i $2 fichier.txt | cut -d"," -f2 |tr "[:upper:]" "[:lower:]") echo # Test de la réponse avec la variable de comparaison if [ "$reponse_clean" = "$capitale" ] then echo "Bravo" else echo "Désolé, la bonne réponse était : $capitale" fi ;; v) # gestion des pays - option "v" echo "Quel pays a pour capitale $2 ?" read reponse reponse_clean=$(echo $reponse | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"\ | tr "[:upper:]" "[:lower:]") capitale=$(grep -i $2 fichier.txt | cut -d"," -f1 |tr "[:upper:]" "[:lower:]") echo if [ "$reponse_clean" = "$capitale" ] then echo "Bravo" else echo "Désolé, la bonne réponse était : $capitale" fi ;; :) # gestion d'absence de paramètre echo "Vous devez fournir une capitale ou un pays..." echo echo "Usage : quizz.sh [option] [paramètre]" echo ;; \?) # gestion d'option incorrecte echo "Option incorrecte $OPTARG" echo echo "Usage : quizz.sh [option] [paramètre]" echo "Options = -p (Pays) ou -v (Capitale)" echo ;; esac doneN'oublie pas de changer le fichier "fichier.txt" par ton fichier contenant le nom des pays et des capitales...
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J' étais en train de rediger un message pour lui donner des pistes , mais vu que tu lui a donné le script tout fait ... Il ne comprendra rien à ce qui est fait et cet exercice n'aura servit à rien en somme . Il ne saura pas plus faire un script
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
12 déc. 2006 à 21:22
12 déc. 2006 à 21:22
Rien ne t'empêche de lui donner des pistes malgré mon intervention.
Comme bien souvent des exemples sont beaucoup plus parlant que des explications... c'est la raison pour laquelle j'ai carrément mis un script tout "chiadé", mais hormis le "getopts" le reste c'est du traditionnel.
Comme bien souvent des exemples sont beaucoup plus parlant que des explications... c'est la raison pour laquelle j'ai carrément mis un script tout "chiadé", mais hormis le "getopts" le reste c'est du traditionnel.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 déc. 2006 à 21:26
12 déc. 2006 à 21:26
Salut,
J' étais en train de rediger un message pour lui donner des pistes , mais vu que tu lui a donné le script tout fait ...
Rien et personne ne t'empêche d'écrire ton message :-))
J' étais en train de rediger un message pour lui donner des pistes , mais vu que tu lui a donné le script tout fait ...
Rien et personne ne t'empêche d'écrire ton message :-))
Bon déjà merci beaucoup à tout le monde. (surtout jipicy^^)
Ensuite c'est vrai que je demandais pas non plus tout le travail, du coup je culpabilise un peu.
Mais je me contente pas de recopier bêtement j'essaye de comprendre, du coup j'ai quelques questions:
par ex pour la ligne:
p) # gestion des capitales - option "p"
le dièse (#) marqu'il s'agit d'un commentaire (et n'est donc pas obligatoire pour faire fonctionner le script)?
le "esac" à la fin est pour marquer la fin du "case"?
Ne puis-je pas mettre de "default" après les 2premiers cas tout simplement?
Et une autre question par rapport au scripts (mais pas celui là), cpeut-on utiliser un "elsif" avec un script et si oui comment?
Ensuite c'est vrai que je demandais pas non plus tout le travail, du coup je culpabilise un peu.
Mais je me contente pas de recopier bêtement j'essaye de comprendre, du coup j'ai quelques questions:
par ex pour la ligne:
p) # gestion des capitales - option "p"
le dièse (#) marqu'il s'agit d'un commentaire (et n'est donc pas obligatoire pour faire fonctionner le script)?
le "esac" à la fin est pour marquer la fin du "case"?
Ne puis-je pas mettre de "default" après les 2premiers cas tout simplement?
Et une autre question par rapport au scripts (mais pas celui là), cpeut-on utiliser un "elsif" avec un script et si oui comment?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
12 déc. 2006 à 22:43
12 déc. 2006 à 22:43
Re-
par ex pour la ligne:
p) # gestion des capitales - option "p"
le dièse (#) marqu'il s'agit d'un commentaire (et n'est donc pas obligatoire pour faire fonctionner le script)?
Effectivement c'est un commentaire et il n'est pas obligatoire. J'aurai dû le mettre au dessus et non pas sur la même ligne... oups ;-))
le "esac" à la fin est pour marquer la fin du "case"?
Oui.
Ne puis-je pas mettre de "default" après les 2premiers cas tout simplement?
C'est un peu plus compliqué là. Les deus options ( le deux points (:) et le point d'interrogation protégé (\?) sont en fait spécifiques à la commande "getopts".
En règle générale la fonction "case/esac" prend effectivement une option "defaut" symbolisé par l'astérisque (*) pour traiter tout ce qui ne correspond pas aux options précédemment citées.
Et une autre question par rapport au scripts (mais pas celui là), peut-on utiliser un "elsif" avec un script et si oui comment?
En fait c'est "elif" (et non pas elsif) :
par ex pour la ligne:
p) # gestion des capitales - option "p"
le dièse (#) marqu'il s'agit d'un commentaire (et n'est donc pas obligatoire pour faire fonctionner le script)?
Effectivement c'est un commentaire et il n'est pas obligatoire. J'aurai dû le mettre au dessus et non pas sur la même ligne... oups ;-))
le "esac" à la fin est pour marquer la fin du "case"?
Oui.
Ne puis-je pas mettre de "default" après les 2premiers cas tout simplement?
C'est un peu plus compliqué là. Les deus options ( le deux points (:) et le point d'interrogation protégé (\?) sont en fait spécifiques à la commande "getopts".
En règle générale la fonction "case/esac" prend effectivement une option "defaut" symbolisé par l'astérisque (*) pour traiter tout ce qui ne correspond pas aux options précédemment citées.
Et une autre question par rapport au scripts (mais pas celui là), peut-on utiliser un "elsif" avec un script et si oui comment?
En fait c'est "elif" (et non pas elsif) :
if ... then ... elif ... then ... else ... fiTiens un bon lien pour l'apprentissage du bash ;-))