Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

#!/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

#3 Le 21/10/2020, à 20:36

cqfd93

Re : Aide débutant script

Modération

Bonjour,

Pour ajouter toi-même les balises code à ton message #1 :

  • Cliquer sur le lien « Modifier » en bas à droite du message

  • Sélectionner le texte

  • Cliquer sur le <> de l'éditeur de message
    1471986854.png


cqfd93

Hors ligne

#4 Le 21/10/2020, à 20:57

dalsou

Re : Aide débutant script

pingouinux a écrit :

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

daisou #4 a écrit :

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.

pingouinux #2 a écrit :

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