IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Affichage de ligne de script


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut Affichage de ligne de script
    bonjour à tous
    je poursuis mes exercices de débutant en script bourne shell

    un programme en Bourne Shell nommé cub, qui accepte comme argument un nom de fichier, et en affiche les lignes 5 à 10.

    donc actuellement j'ai fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #/bin/sh
    read fichier
    sed -n '5,10 p' $fichier
    mon 1er soucis est :
    si à la place de "read fichier" je voudrais récupérer directement le nom du fichier qui serai saisie après l'activation du hier
    exemple: ./test2.sh test1sh (ici test2.sh est le script que je cherche a écrire et test1.sh le script que je veux afficher de la ligne 5 à 10

    mon 2eme soucis est si le fichier n'existe pas comment activé un message
    j'ai tester sans succes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #/bin/sh
    #set -xv
    read fichier
    if ls $fichier is false
    then echo "$fichier n'est pas un fichier ordinaire ou n'existe pas."
    fi
    sed -n '5,10 p' $fichierer
    mais j'obtien
    ls: impossible d'accéder à test: No such file or directory
    ls: impossible d'accéder à is: No such file or directory
    ls: impossible d'accéder à false: No such file or directory
    sed: impossible de lire test: No such file or directory

    merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    si à la place de "read fichier" je voudrais récupérer directement le nom du fichier qui serai saisie après l'activation du hier
    exemple: ./test2.sh test1sh (ici test2.sh est le script que je cherche a écrire et test1.sh le script que je veux afficher de la ligne 5 à 10
    On appelle ça un argument.
    Dans la ligne de commande ./test2.sh test1sh, le 1er argument est test1sh et peut être référencé dans le script grâce à $1 ou, le plus souvent, "$1" (voire "${1}").

    mon 2eme soucis est si le fichier n'existe pas comment activé un message
    regarde le man test

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci
    mon premier problème est résolu

    en fait j'avais fait avec $# et ça ne fonctionnait pas


    super tout fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #/bin/sh
    #set -xv
    if [ -r $1 ]
    then
    sed -n '5,10 p' $1
    else echo " $1 n'est pas un fichier ordinaire ou n'existe pas."
    fi

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    Si le nom de ton fichier possède un espace, cela ne fonctionnera pas.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    super tout fonctionne
    Presque!

    Juste pour voir, essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo -e "l1\nl2\nl3\nl4\nl5\nl6\nl7\nl8\nl9\nl10\nl11\nl12\nl13" > "fichier avec espaces.txt"
    ./test2.sh "fichier avec espaces.txt"
    Je te conseille de toujours mettre les variables entre guillemets (sauf si tu as une bonne raison de ne pas le faire...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #/bin/sh
    #set -xv
    if [ -r "$1" ]
    then sed -n '5,10 p' "$1"
    else echo " '$1' n'est pas un fichier ordinaire lisible ou n'existe pas."
    fi
    [EDIT]il faut "echo -e" pour expanser les \n en sauts de lignes[/EDIT]

  6. #6
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Presque!

    Juste pour voir, essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "l1\nl2\nl3\nl4\nl5\nl6\nl7\nl8\nl9\nl10\nl11\nl12\nl13" > "fichier avec espaces.txt"
    ./test2.sh "fichier avec espaces.txt"
    [/CODE]
    j'ai pas compris le sens de ton test

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    j'ai pas compris le sens de ton test
    Quel résultat as-tu obtenu?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Ordre d'affichage des lignes d'un état
    Par duboisfa dans le forum Oracle
    Réponses: 20
    Dernier message: 28/02/2006, 23h00
  2. [Oracle] Ordre d'affichage de lignes d'une requête
    Par duboisfa dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/02/2006, 19h05
  3. [Reports 6] Ordre d'affichage des lignes d'un état
    Par duboisfa dans le forum Reports
    Réponses: 2
    Dernier message: 17/02/2006, 16h21
  4. [Eclipse 3.0.1] Affichage des lignes
    Par OverCat dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/03/2005, 07h32
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo