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 - Télécharger - Divers Jeux
- Bash list ✓ - Forum Shell
- Bash permission non accordée - Forum Shell
- Bash pause ✓ - Forum Shell
- Bash addition - Forum Programmation
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
33769
Date d'inscription
Statut
Modérateur
Dernière intervention
7 878
De rien, bonne continuation !