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 :

bourne shell ajout d'argument depuis le shell à ceux reçus en entrée


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut bourne shell ajout d'argument depuis le shell à ceux reçus en entrée
    Bonjour

    J'ai des shells en Bourne qui fonctionnent avec une boucle while et des shift
    je dois rajouter des arguments venant d'un fichier, Puis je modifier dynamiquement la liste des arguments reçus en entrée ?

    Merci d'avance
    Philippe

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Qu'entends-tu par "modifier dynamiquement" ? Faudrait donner plus de précisions sur ce que tu veux faire, un exemple ne serait pas de trop.

    Cordialement,
    Idriss

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Bonjour,


    je ne suis pas sûr de bien comprendre...mais je dirais non.
    Il n'est pas possible de passer de nouveaux arguments à un script en train de s'exécuter;
    à moins de l'avoir prévu, et d'ouvrir "un canal de communication" en utilisant la commande interne read
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Bonsoir,

    Les arguments sont dans $*, puis je a l'interieur de mon shell bourne rajouter des arguments a ce tableau.
    Mon script est base sur des shifts, et en fait c'est l'un des arguments actuels recu et dont je ne maitrise pas le format que je souhaite decompose, et rajouter au tableau contenu dans $*

    Merci d'avance
    Philippe

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    pour ça on utilise set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ maFonc() { var1=$1; var2="$2"; var3=$3; set -- $var2; echo "$var1 $* $var3";}         
    $ maFonc foo "-les paramètres positionnels sont écrasés-" bar
    foo -les paramètres positionnels sont écrasés- bar
    je le montre à l'aide d'une fonction, le résultat serait le même avec un script.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Merci pour la réponse
    Mais set -- peux il influer directement sur $*
    mon sh fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $1
    ....
    ....
    shift
    $1
    .....
    .....
    et c'est ce $1 que je souhaite modifier ?

    Merci d'avance
    Philippe

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 44
    Par défaut
    Bonjour,

    Si tu veux ajouter des valeurs aux paramètres positionnels :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set -- "newVal1" "newVal2" "${@}" "newVali"
    exemple :
    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
    $ls -l /bin/sh
    -r-xr-xr-x    5 bin      bin          288912 Jan 16 2009  /bin/sh
     
    $ cat test.sh
    #!/bin/sh
    echo "${@}"
    [ $# -gt 4 ] &&  exit
    set -- "newVal1" "${@}" "newVal2"
    exec $0 "$@"
     
    $./test.sh
     
    newVal1 newVal2
    newVal1 newVal1 newVal2 newVal2
    newVal1 newVal1 newVal1 newVal2 newVal2 newVal2
     
     
    $./test.sh 1
    1
    newVal1 1 newVal2
    newVal1 newVal1 1 newVal2 newVal2
    edit : ne pas utiliser $* mais $@
    pour cause :
    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
    $ cat test.sh
    #!/bin/sh
    printf '%s\n' $*
    echo "---"
    printf '%s\n' $@
    echo "---"
    printf '%s\n' "$*"
    echo "---"
    printf '%s\n' "$@"
     
    ./test.sh 1 "2nd p"
    1
    2nd
    p
    ---
    1
    2nd
    p
    ---
    1 2nd p
    ---
    1
    2nd p

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

Discussions similaires

  1. Lancer un script python avec argument depuis shell
    Par tidusff10 dans le forum Général Python
    Réponses: 1
    Dernier message: 30/03/2012, 12h44
  2. Tuer un process lancé en & depuis un shell
    Par psau dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 16/06/2009, 20h08
  3. lancer sqlplus depuis un shell
    Par magic charly dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 11/10/2006, 11h12
  4. [Shell] Ajouter des éléments au poste de travail
    Par Feeder_Fan dans le forum Framework .NET
    Réponses: 2
    Dernier message: 04/12/2005, 04h07
  5. Passage des arguments par le shell
    Par panda31 dans le forum C
    Réponses: 8
    Dernier message: 09/11/2005, 11h53

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