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

Linux Discussion :

un script shell


Sujet :

Linux

  1. #1
    Membre éprouvé
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Points : 982
    Points
    982
    Par défaut un script shell
    Bonjour

    quand j'exécute mon script je voudrais récupérer son nom pou m'en servir. La variable $0 est là pour ça mais le problème c'est qu'elle ne contient pas que le nom du script ... je m'explique. Supposons que mon script s'appelle script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/bash
    echo "bonjour"
    echo "$0"
    L'exécution donne
    Et du coup si je veux faire un fichier qui s'appelle job.script je ne peux pas faire simplement un job.$0 !

    Existe t il un autre moyen

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    tu peux utiliser basename pour extraire uniquement le nom du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo job.`basename $0`

  3. #3
    Membre éprouvé
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Points : 982
    Points
    982
    Par défaut
    Oui ça marche ! Mais est ce que tu peux m'expliquer la différence entre ` et " ou ' ?

    Je savais que ' et " permettent de mettre ou nom une variable dans l'expression mais je connaissais pas ` !

    Sinon j'ai trouvé une autre solution c'est la suivante qui supprime les deux premiers caractères !

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    `` te permet de récupérer le resultat d'une commande (dans ce cas-ci basename $0 -> résultat -> nom de ton fichier.)


    Sinon j'ai trouvé une autre solution c'est la suivante qui supprime les deux premiers caractères !
    Code :
    nom=${0:2}
    Cette solution fonctionnera si tu executes ton script de cette manière

    Cependant si tu executes ton script en donnant le chemin complet, cette solution ne fonctionnera plus.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # execution du script
     
    /chemin/vers/script
     
    echo ${0:2} te renverra comme résultat -> hemin/vers/script
    Par contre avec la commande basename

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    basename /chemin/vers/script -> résultat -> script

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 731
    Points : 31 054
    Points
    31 054
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mygale1978 Voir le message
    Salut,

    `` te permet de récupérer le resultat d'une commande (dans ce cas-ci basename $0 -> résultat -> nom de ton fichier.)
    Attention aux mauvaises formulations. Les backquotes `` te permettent de récupérer tout ce qu'un programme affiche exemple var=`pwd` => pwd affiche le répertoire courant et cet affchage va dans "var".

    La notion de "résultat" est plutôt associée à la notion de "statut" (statut à 0 => résultat vrai et statut <> 0 => résultat faux)
    Exemple
    Ce programme n'affiche rien donc inutile d'écrire var=`true` mais il renvoie quand-même un résultat (comme tous les programmes Unix)

    Et donc, pour récupérer le résultat d'un programme, faut passer par la variable "$?".

    Citation Envoyé par Ladgalen Voir le message
    La variable $0 est là pour ça mais le problème c'est qu'elle ne contient pas que le nom du script ...
    En fait, elle contient le nom tel que tu l'as appelé

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 41
    Points
    41

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

Discussions similaires

  1. Script shell
    Par anzar dans le forum Linux
    Réponses: 4
    Dernier message: 03/12/2004, 14h41
  2. [JSP] script shell
    Par goolix dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/08/2004, 09h08
  3. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    Réponses: 8
    Dernier message: 15/06/2004, 16h31
  4. Explication script shell
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 14/06/2004, 13h54
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24

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