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

    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
      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...)
    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
      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
        1. merci bien ton script est parfait . merci bien
          1. Modérateur
            De rien, il ne te restera plus qu'à expliquer à ton prof les différents choix ;-))
          2. @jipicyun autre demande svp je cherche des exercices de programation shell avec des corrections .connaissez vs des sites ???
            merci d'avance .
        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 .