Bash
Résolu
Bonjour,
Voila je me retrouve à corriger un bash, que voici
Le souci c'est quand je l’exécute il m'affiche n'importe quoi.
Pour la vérification de la présence d'un fichier je ne comprend pas les if
Quelqu'un peut m'éclairer ?
Voila je me retrouve à corriger un bash, que voici
#!/bin/bash
# Vérification du paramètre (dossier dico.txt)
# S'il est absent, on signale à l'utilisateur de choisir le dossier dico.txt
if [ -z $1 ]
then
echo 'veuillez rentrer dico.txt en paramètre svp'
else
sortie=$1
fi
# Vérification s'il existe bien un dossier dico.txt
if [ -f $1 ]
then
for lettre in {A..Z}
do
#première mission: combien de fois est utilisée chaque lettre
printf "%s - %s -%s\n" $(grep -ic $lettre "$1") $2 $lettre
#deuxième mission: indication de la
somme des mots du dictionnaire
done | sort -rn
else
echo 'dossier non valide'
fi
Le souci c'est quand je l’exécute il m'affiche n'importe quoi.
Pour la vérification de la présence d'un fichier je ne comprend pas les if
Quelqu'un peut m'éclairer ?
A voir également:
- Bash
- Bingo bash free - Télécharger - Divers Jeux
- Bash addition - Forum Programmation
- Bash pause ✓ - Forum Shell
- Bash permission non accordée - Forum Shell
- Bash list ✓ - Forum Shell
1 réponse
Bonjour,
Les tests bash sont décrits ici (voir section "Les tests"):
https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions
Le premier test contrôle si la chaîne $1 (premier argument passé au script) est non vide.
Le second contrôle que $1 est un chemin correspondant à un fichier régulier.
Je peux déjà te dire qu'il y a plusieurs fautes :
- les arguments $1, etc devraient être écrits "$1" pour prendre en charge les espaces correctement.
- le programme devrait finir par
- si le nombre d'argument est incorrect il devrait déclencher
- la deuxième ligne du second commentaire "somme des mots..."... n'est pas commentée !
- plutôt qu'un test "-z" pour contrôler le nombre d'argument il faudrait contrôler la valeur de $#.
-
Bonne chance
Les tests bash sont décrits ici (voir section "Les tests"):
https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions
Le premier test contrôle si la chaîne $1 (premier argument passé au script) est non vide.
Le second contrôle que $1 est un chemin correspondant à un fichier régulier.
Je peux déjà te dire qu'il y a plusieurs fautes :
- les arguments $1, etc devraient être écrits "$1" pour prendre en charge les espaces correctement.
- le programme devrait finir par
exit 0
- si le nombre d'argument est incorrect il devrait déclencher
exit 1(ou une valeur non nulle), car affecter la variable sortie n'a aucune utilité dans ce script.
- la deuxième ligne du second commentaire "somme des mots..."... n'est pas commentée !
- plutôt qu'un test "-z" pour contrôler le nombre d'argument il faudrait contrôler la valeur de $#.
-
grep -iccompte le nombre de lignes comportant un caractère donné, pas le nombre d'occurrences de ce caractère.
Bonne chance
bikette
merci de ta réponse detaillée
mamiemando
Messages postés
34188
Date d'inscription
Statut
Modérateur
Dernière intervention
7 890
De rien, bonne continuation !