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 :

création shell commande


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut création shell commande
    Bonjour, voila je voudrai savoir comment créer des commandes linux, accessible par le shell.
    Par exemple je créé mon script sh avec mes commandes - commande1() et commande2() - comment faire, pour qu'il soit possible d'appeler en ligne de commande commande1 et commande2 comme une commande normale linux.

    J'ai trouvé un moyen de faire en appelant source avec le fichier de script dans .bashrc.
    Y a til une autre façon de procéder ?
    Merci

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

    Tu dois rendre ton script executable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chmod +x ton_script.sh
    et dans ton script tu ajoutes cette ligne tout en haut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/chemin/vers/type/shell/que/tu/souhaites/utiliser
    exemple : #!/usr/bin/bash

  3. #3
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Non cela ne me permet pas d'executer les fonctions de mon scripts comme des commandes.
    J'ai un script, script.sh avec des fonctions définies a l'intérieur, commande1(), commande2() etc....
    Je voudrais pouvoir appeler directement à partir du shell commande1 par exemple, sans invoquer ./mon_script.sh

  4. #4
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Par défaut
    J'ai éventuellement une solution avec getopt (même si ça peut paraître démesuré )

    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
    18
    19
    20
    21
    22
    23
     
    #!/bin/bash
     
    fonction1() {
            echo "execution fonction1"
    }
     
    fonction2() {
            echo "execution fonction2"
    }
     
    set -- `getopt ab $*`
    while [ $1 != -- ] ; do
            case $1 in
            -a)
                    fonction1
                    ;;
            -b)
                    fonction2
                    ;;
            esac
            shift
    done
    On peut appeler le script avec l'option -a ET/OU -b.
    On peut même en combiner plusieurs dans le genre (-a -b -a -a -b ) ce qui aura pour effet de donner :
    execution fonction1
    execution fonction2
    execution fonction1
    execution fonction1
    execution fonction2
    EDIT: Oups j'arrive un poil trop tard
    Mais par contre à ma connaissance je ne pense pas que l'on puisse directement appeler en ligne de commande une fonction définie dans un script shell ...

  5. #5
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    ben la j'appelle directement mes fonctions que j'ai définie dans mon script en editant .bashrc en lui rajoutant . ~/bin/mon_script.sh. Cela me permet d'appeler les fonctions de mon script directement a partir du shell, mais a chaque modification je suis obligé de changer de compte et de relogger pour que ce soit pris en compte.
    Sinon en fait je voulais juste avoir le même comportement qu'avec les commandes déja défini comme ls, mkdir etc....
    On les invoque directement, sans faire ./ls, ou ./mkdir. Comment arriver a ça dans la logique de linux ?
    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Sinon en fait je voulais juste avoir le même comportement qu'avec les commandes déja défini comme ls, mkdir etc....
    les commandes ls, mdkir sont des programmes executables et non des fonctions.

    on ne tape pas ./ devant car le chemin vers ces commandes est définie dans le PATH

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (user@hespera:/)% which ls
    /usr/bin/ls
    (user@hespera:/)% env | grep PATH
    PATH=/usr/bin:/usr/local/bin:/opt/bin:/opt/local/bin:/usr/ccs/bin:/usr/xpg4/bin:/opt/sfw/bin:/usr/sbin
    (user@hespera:/)% file /usr/bin/ls
    /usr/bin/ls:    ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped
    Pourrais-tu également montrer le contenu de ton script stp?

  7. #7
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Comment donc créer une commande, qui puisse être invoquer juste avec un nom simplement, sans avoir a faire ./mon_script.sh, mais juste en entrant en ligne de commande mon_script ?
    Dans mon script il n'y a rien de particuliers pour le moment, je commence directement avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function blabla()
    {
    #quelques lignes de code pour tester
    }

Discussions similaires

  1. c shell + commande sed
    Par gaucher dans le forum Linux
    Réponses: 3
    Dernier message: 15/11/2007, 12h42
  2. c shell + commande sed
    Par gaucher dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 14/11/2007, 13h19
  3. Shell commande "une fois que"
    Par coincoin22 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 26/07/2007, 21h03
  4. fonction Shell "command.com"
    Par shinta dans le forum Access
    Réponses: 3
    Dernier message: 29/01/2007, 16h44
  5. shell commande "del"
    Par error dans le forum Langage
    Réponses: 6
    Dernier message: 03/10/2006, 14h35

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