Exe programme shell

Résolu
Bonjour,
svp je vx votre aide
script qui affiche les n (p e n=12) premier lignes d une liste de nom de fichiers admis en parametre d entree le script devra verefie que la donnee n est correcte et il en est de meme avec les fichiers . les parametres a passer a ce script sont n et les nom des fichiers
voila ce que j ai fait svp tu px modifie les erreurs et merci bien
#/bin/bash
echo "entrie le nom de fichier"
read file
if test-f $file
then
echo"entrie le nombre de ligne "
read x
if (($x<0))
then
echo"le nombre est incorrect"
else
head -n $x $file
fi
fi
merci d'avance
Configuration: Windows 7 / Firefox 3.6

6 réponses

  1. Modérateur
    Salut,

    d une liste de nom de fichiers admis en parametre
    A mon avis il faut passer tous les fichiers dont on doit lire n lignes d'un coup et non pas demander les fichiers un par un.

    ./script_test.sh 5 fichier1 fichier2 fichier3


    d entree le script devra verefie que la donnee n est correcte
    Il faut vérifier que le 1er paramètre est bien une valeur numérique.
    Voir Tester une variable numérique

    et il en est de meme avec les fichiers .
    Ensuite il faut tester que les autres paramètres du script sont bien des fichiers

    shift
    for param in "$@"
    do
    if [ -f  "${param}" ]
    then
    echo "${param} est bien un fichier."
    else
    echo "${param} n'est pas un fichier."
    exit
    fi
    done

    0
    1. excuse moi mais je crois pas que vous avez pas répond a ma question car apres que le programme tester si le file est un fichier il affiche les n ligne ce quelle manque ds votre programme
      merci bien cher ami
      0
      1. Modérateur
        Re-

        Je ne t'ai pas donné le programme en entier, mais des briques à assembler, répondant à tes questions et aux besoins de ton script.

        A toi de rassembler les parties en tenant compte de ce que je t'ai donné.

        1 - Tester le 1er paramètre (numérique, voir lien)
        2 - Tester les autres paramètres (tu peux tout a fait inclure l'affichage des lignes du fichier de suite après avoir testé que le paramètre est bien un fichier...)
        0
    2. ok merci bien cher ami mais notre prof ma dis qu'il y a des erreurs donc il faut que l'éviter .personnellement j'arrive pas les déterminer .svp si tu px m'aider
      merci
      0
      1. Modérateur
        Essaye ça :

        #! /bin/sh
        
        #set -xv
        
        # Test nombre params
        if [ "$#" -lt 2 ]
        then echo "ERREUR ! Il faut au moins 2 paramètres."
        exit 3
        fi
        
        nbr="$1"
        if ! ((nbr)) 2>/dev/null
        then echo "ERREUR ! Le 1er paramètre n'est pas un entier."
        exit 4
        fi
        
        shift
        for param in "$@"
        do
        if [ -f  "${param}" ]
        then
        echo "${param} est bien un fichier."
        echo "Affichage des ${nbr} premières lignes du fichier ${param}..."
        echo
        head -n "${nbr}" "${param}"
        echo
        else
        echo "${param} n'est pas un fichier."
        echo
        fi
        done
        0
        1. merci bien ton script est parfait . merci bien
          0
          1. Modérateur
            De rien, il ne te restera plus qu'à expliquer à ton prof les différents choix ;-))
            0
          2. @jipicyun autre demande svp je cherche des exercices de programation shell avec des corrections .connaissez vs des sites ???
            merci d'avance .
            0
        2. oui merci bien j ai bien compr ton script .
          un autre demande svp je cherche des exercices de programation shell avec des corrections .connaissez vs des sites ???
          merci d'avance .
          0