Pages : 1
#1 Le 21/10/2020, à 20:18
- dalsou
Aide débutant script
Bonsoir, j'ai commencé à faire des script depuis quelques jour, on m'a donné un exercice : je dois à l'aide de 2 fonctions afficher la L ligne d'un fichier (L et le fichier sont donnés en parametres).
J'ai finis mes fonctions mais rien ne s'affiche ! Help svp
#!/bin/bash
getNumLignes() {
if [ $# -eq 1 ] && [ -f "$1" ] && [ -r "$1" ]; then
wc -l "$1" | cut -d ' ' -f 1
return 0
else
return 1
fi
}
extractLigne() {
if [ $# -eq 2 ]; then
local maxl=$(getNumLignes $2)
if [ $? -eq 0] && [ $1 -gt 0 ] && [ $1 -le $maxl ]; then
var=$(cat "$2" | head -n $1 | tail -n 1)
return 0
else
return 1
fi
fi
echo $maxl
}
Hors ligne
#2 Le 21/10/2020, à 20:30
- pingouinux
Re : Aide débutant script
Bonsoir,
Si tu n'appelles pas la fonction extractLigne, c'est normal qu'il ne se passe rien.
Ajouté :
Mais il y a d'autres trucs qui ne vont pas, je te laisse chercher un peu…
Dernière modification par pingouinux (Le 21/10/2020, à 20:40)
Hors ligne
#4 Le 21/10/2020, à 20:57
- dalsou
Re : Aide débutant script
Bonsoir,
Si tu n'appelles pas la fonction extractLigne, c'est normal qu'il ne se passe rien.Ajouté :
Mais il y a d'autres trucs qui ne vont pas, je te laisse chercher un peu…
Si tu veux bien m'aiguiller... étant donné qu'il s'agit pour la grande majorité d'une correction je trouve cela un peu surprenant !
Hors ligne
#5 Le 21/10/2020, à 21:03
- xubu1957
Re : Aide débutant script
Bonsoir,
Voir règles du forum > balises BB code
Balise CODE :
C'est la balise à utiliser pour donner de longs messages d'erreurs, des contenus de fichiers de configuration, des commandes à taper, etc … Elle permet des messages plus "compacts", et est moins ambiguë que d'autres polices sur certains caractères.
#!/bin/bash
getNumLignes() {
if [ $# -eq 1 ] && [ -f "$1" ] && [ -r "$1" ]; then
wc -l "$1" | cut -d ' ' -f 1
return 0
else
return 1
fi
}
extractLigne() {
if [ $# -eq 2 ]; then
local maxl=$(getNumLignes $2)
if [ $? -eq 0] && [ $1 -gt 0 ] && [ $1 -le $maxl ]; then
var=$(cat "$2" | head -n $1 | tail -n 1)
return 0
else
return 1
fi
fi
echo $maxl
}
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
En ligne
#6 Le 21/10/2020, à 21:20
- pingouinux
Re : Aide débutant script
Si tu veux bien m'aiguiller... étant donné qu'il s'agit pour la grande majorité d'une correction je trouve cela un peu surprenant !
Le but du jeu n'est pas de faire les exercices à ta place, mais de t'aider à les faire.
Si tu n'appelles pas la fonction extractLigne, c'est normal qu'il ne se passe rien.
Il y a déjà ça à corriger. La fonction getNumLignes est appelée par la fonction extractLigne qui n'est pas appelée dans le script. Quand tu auras ajouté l'appel à extractLigne, relance le script, et tu auras d'autres erreurs à corriger. Reviens chercher de l'aide si tu n'y arrives pas.
Hors ligne
#7 Le 21/10/2020, à 22:25
- Hizoka
Re : Aide débutant script
Salut,
tu pourrais simplifier cat "$2" | head -n $1 | tail -n 1 par l'utilisation de sed par ex.
Et si tu veux conserver head et tail, vire au moins le cat qui ne sert à rien.
Tu peux te passer de cut dans wc -l "$1" | cut -d ' ' -f 1 en faisant une redirection d'entrée du fichier vers wc.
Et comme le dit pingouinux, il y a une petite erreur dans ton script.
Tu auras un message d'erreur assez explicite si tu exécutes ta fonction extractLigne.
Dernière modification par Hizoka (Le 21/10/2020, à 22:29)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
Pages : 1