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 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    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.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  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 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    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.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  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 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    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" ]
    [...]?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ 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, 15h04
  2. talend - paramètre - shell
    Par captu dans le forum Exécution et industrialisation
    Réponses: 3
    Dernier message: 03/02/2010, 12h03
  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, 09h01
  4. Réponses: 4
    Dernier message: 15/01/2008, 10h43
  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, 16h18

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