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 :

Récupérer la dernière commande dans une variable


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Points : 41
    Points
    41
    Par défaut Récupérer la dernière commande dans une variable
    Bonjour,

    La question peut sembler un peu bête et pourtant je cherche depuis des heures....

    Comment récupérer la dernière commande exécutée dans une variable sans passer par une variable préalable sur laquelle je fais un eval?

    J'ai tenté de récupérer le résultat d'un
    ou d'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    history 1 | tail -n2 | head -n1
    mais impossible d'y parvenir

    Quelqu'un aurait-il une astuce sympathique à me fournir ?

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Points : 41
    Points
    41
    Par défaut
    Enfin trouvé.........

    La réponse est:
    Très pratique pour savoir quelle est la commande qui vient d'échouer dans un script ^^

    Bye Bye

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Points : 41
    Points
    41
    Par défaut
    Bon bah cela fonctionne bien mais juste dans le shell courant

    Dès lors que je met ça à l'intérieur d'un script il voit la dernière commande du shell courant et pas la dernière commande lancée dans le script

    Si quelqu'un à une idée je suis preneur....



  4. #4
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Quel shell utilise tu?

    la réponse peux varier entre sh/ksh/csh/zsh/tcsh/bash/......

    ensuite a l'intérieur d'un script si tu ne sais pas ce que tu viens de lancer c'est étrange.....

    Rien ne t'empêche non plus de stocker (variable/fichier/...) la commande que tu va lancer avant de la lancer ....

    en espérant que cela solutionne ton souci

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Points : 41
    Points
    41
    Par défaut
    J'utilise bash,

    Bien entendu je sais ce que je lance ^^ mais les arguments sont dynamiques et je souhaitai me faire une fonction qui vérifie l'état du dernier process (easy) et qui m'envoie un mail avec la commande qui vient d'échouer

    Ce qui me donnait quelquechose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "bbbbbbb"
    check_last_process
    Je voulais faire quelque chose du genre pour m'éviter de faire une fonction à laquelle je passe en argument la commande à executer pour ensuite faire un "eval" dedans.
    Ca me genait de faire cela mais il semble qu'il va falloir.......

  6. #6
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Un truc dans ce style?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #!/bin/ksh
    execute() {
        var=$*
        echo "Executing $var"
        eval $var
        if [ $? -eq 0 ]
            then
            echo "Command Ok"
        else
            echo "Command Failed"
        fi
    }
     
    execute touch toto.am$$
    execute chmod 000 toto.am$$
    execute cat toto.am$$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Executing touch toto.am19468
    Command Ok
    Executing chmod 000 toto.am19468
    Command Ok
    Executing cat toto.am19468
    cat: toto.am19468: Permission non accordée
    Command Failed

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Points : 41
    Points
    41
    Par défaut
    Grosso modo oui, sauf que dans ma fonction, je force que ce qui est passé à doit être entre ""

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if [ $# -eq 1 ];then
         eval "$1"
            if [ $? != 0 ];then
            KEEP_TMP_FILES=1
             mail -s "$(date) :Une erreur est survenue lors du process ${1/\"/\\\"}" xxx@xxx.fr < /dev/null > /dev/null 2>&1
                    exit 3
            fi
    else
     echo -e "\n run_multiprocess function error :\n\tOnly one command can be place in the function \"run_multiprocess\" , please make sure than the command passed to the function \"run_multiprocess\" is between double quotes (ex: run_multiprocess \"ls -la *\")\n"
                    exit 3
     
    fi
    Car sinon dans le cas d'un 'ls -la *' tu te retrouve avec un joli foutoir ^^

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2010, 18h09
  2. Mettre le résultat d'une commande dans une variable
    Par daviddu54 dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 18/09/2008, 23h58
  3. Réponses: 1
    Dernier message: 04/11/2007, 15h03
  4. Le résultat d'une commande dans une variable ?
    Par kilkikou dans le forum Linux
    Réponses: 5
    Dernier message: 19/10/2007, 23h23
  5. [Mail] comment inclure une commande dans une variable
    Par pierrot10 dans le forum Langage
    Réponses: 8
    Dernier message: 27/04/2006, 20h17

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