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 :

Paramètre shell en cascade


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut Paramètre shell en cascade
    Bonjour/Bonsoir

    J'ai un problème simple mais assez embêtant.

    Soit un script dont le paramètre positionnel $1 vaut toto

    a=1
    b=a

    Comment dans un script retrouver la valeur du paramètre $1 en partant de b ?

    Le mieux que j'ai pu faire c'est:

    echo \$$b qui va donner $a mais sans l'évaluer.

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

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

    en bash ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a=123
    b=a
    echo ${!b}
    123
    c'est appelé une indirection.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut
    Pardon j'ai oublié de préciser; en sh.

    Et ok merci pour le terme, dur de trouver des infos dessus sur internet sans savoir comment ça s'appelle

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 703
    Par défaut
    je crains qu'en sh tu n'aies pas d'autres choix que d'utiliser eval
    c'est une commande très dangereuse, car, imagine que l'argument passé au script soit "$(rm -rf /)", alors même
    eval echo "$1" va effacer ton système.

    Il serait préférable de nous exposer la raison pour laquelle tu pense avoir besoin de faire ainsi, pour qu'on cherche un contournement.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut
    Le script est censé extraire les fichiers d'une archive.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #!/bin/sh
     
    estDansTar() {
     
    if [ $# -ne 2 ]
    then
    	exit 1;
    fi
    for i in `tar -tf $1`
    	do
    	if [ -d $2 ]
    	then
    		exit 2;
    	fi
    	if [ `basename $i` = $2 ]
    	then
    		exit 0;
    	fi
    done
    }
     
     
     
    if [ $# -lt 2 ]
    then
    	echo "Usage $0 archive.tar fichier.txt [...]";	
    	exit 1;
    fi
    k=2;
    nbExtrait=0;
    for i in `tar -tf $1`
    	do
    	while [ $k -le $# ] #tant que l'on a pas parcouru tout les paramètres. (je pourrais user un switch mais j'ai besoin de garder mon $1
    	do
    		if [ -d $... ]  # c'est ici que je dois vérifier si le paramètre $ $k est un fichier ou non idem pour tous les $k qui suivent.
    		then
    			echo "Usage $0 archive.tar fichier.txt [...]";
    			echo "$k n'est pas un fichier accessible;"
    			exit 2;
    		fi
    		if [ estDansTar $1 $k -eq 0 ] 
    		then
    			nbExtrait=`expr $nbExtrait + 1`;
    			tar -xf $1 $k;
    		fi
    		k=`expr $k +1`;	
    	done
    done
    if [ $nbExtrait -eq 0 ]
    then
    	echo "Aucun fichier correspondant extrait";
    	exit 3;
    fi
    exit 0;

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 703
    Par défaut
    [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    k=2
    nbExtrait=0
    premParam="$1"
    tar -tf "$premParam" | while read i
    do
    shift
       for f
       do  
          if [ -d "$f" ]
    [...]?

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

Discussions similaires

  1. [BIRT 2.6.2] Paramètres multiples en cascade
    Par scariou29 dans le forum BIRT
    Réponses: 1
    Dernier message: 14/11/2011, 16h04
  2. talend - paramètre - shell
    Par captu dans le forum Exécution et industrialisation
    Réponses: 3
    Dernier message: 03/02/2010, 13h03
  3. [CR XI] Paramètres dynamiques en cascade - valeurs à double
    Par Asyndra dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 20/08/2009, 10h01
  4. Réponses: 4
    Dernier message: 15/01/2008, 11h43
  5. [T-SQL]Envoyer en paramètre de proc stock Sybase une variable date shell
    Par Doctor Z dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 30/10/2007, 17h18

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