Aller au contenu

Script Shell


Monsieur Banane

Messages recommandés

Boujour, apres avoir passé 3h de TP + 5h cette aprem, je suis arrivé au 11eme script shell que j'ai à faire. Et la, j'en peut plus, c'ets erreur sur erreur... je croi qu'on peut faire plus simple!

 

Enoncé :

La commande extract [-b n1] [-e n2] [file]

Ecrivez cette commande qui extrait du fichier "file" (ou de l'entrée standard si aucun fichier n'ets précisé en ligne de commande de n1 à n2, incluses. Si n1 (resp. n2) n'est pas précisé, alors, on considere que sa valeur est 1 (resp. la derniere ligne du fichier).

Indication : head, tail et cat vous seront utiles.

 

 

 

voila, moi, j'ai fait un truc avec des if if if if if, et ca marche pas... je croi qu'il faut trouver plus simple (genre avec "shift" ou des boucles...)

merci de votre aide :D

Lien vers le commentaire
Partager sur d’autres sites

#! /bin/bash
FROM=""
TO_CMD="cat"
FILE="-"
if [ "$1" = "-b" ]; then
    shift
    FROM="$1"
    shift
else
    FROM=1
fi
if [ "$1" = "-e" ]; then
    shift
    TO_CMD="head -n $1"
    shift
fi
if [ -n "$1" ]; then
    FILE="$1"
fi
cat $1 | $TO_CMD - | tail -n +$FROM -

Y'a peut-être un bug quand aucun argument n'est donné (y'a peut-être plein de bugs en fait) et c'est pas nécessairement propre.

Lien vers le commentaire
Partager sur d’autres sites

C'est juste des variables que je définis moi-même ;)

.... ptdr ....

je re-regarde ca demain, mais avec le shift, ca a l'air bien plus simle!

 

Un ptit HS, mais tu fais sa dans quels cours?

"systeme utilisateur"

 

pour l'instant, c'est des cours sur les commandes UNIX (de bases et plus complexes, expressions rationnelles, remplacement avec sed ... , et on vient d'attaquer les script shell). On a 2h de cours TD , et 3 h de TP

Lien vers le commentaire
Partager sur d’autres sites

voila la correction :

begin=1
end=1
while [ $# -ne 0 ]; do
      case "$1" in
           "-b") begin=$2; shift
           "-e") end=$2; shift
           *) break;;
      esac
done

fic=$1

cat

(et la, jvien de me rendre comte que j'ai pas pris le reste de la correction ... lol ... dsl!)

 

on avait pas encore vu les case et break, dc personne a su le faire, jai demandé au prof comment faire sans, il m'a regardé lair de dire "ne pose plus jamais de questions comme celle la" :D

Modifié par Monsieur Banane
Lien vers le commentaire
Partager sur d’autres sites

Dis à ton prof que extract [-b n1] [-e n2] [file] n'accepte pas extract -e foo -b bar stricto sensu parce que ça indique que les arguments sont optionnels, pas qu'on peut les permuter (la preuve en est que tu ne peux pas mettre file où tu veux non plus) et qu'au lieu de bricoler des switch, il devrait utiliser getopt.

 

Enfin, lui dis pas, pense le juste très fort ;)

 

Et ta correction me semble bizarre. Si tu la teste, tu verras qu'elle parse juste le premier argument (et qu'elle compile pas du tout même parce qu'il manque des ";;").

Je pourrais aussi troller en disant que "extract -b 1 -e 3 fichier et j ajoute 70 arguments si je veux" fonctionne aussi, mais comme j'ai pas vérifié non plus, je vais me taire. Ou pas...

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...