[Bash Renommer argument

AzN_03 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
AzN_03 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous ,

Voila j'ai un petit problème dont je n'arrive pas a me défaire ^^

Je n'arrive pas a changer le nom d'un argument automatiquement . Je poste un bout de code pour etre plus clair

Code :

#!/bin/bash
a=0

for i in $*
do

VM$a=$i // La ligne qui foire ^^

a=$(($a+1))

done

Pour chaque valeur j'aimerai donc attribuer une variable du type VM$a

Pour avoir comme résultat suivant au lancement de la commande : ./script s_data s_ftp etc..

VM1=s_data
VM2=s_ftp
etc...

Merci a tous !

1 réponse

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    #!/bin/bash   
                           
    a=1
    
    for i in $*
    do
    
            eval VM$a=$i
            ((a++))
    
    done
    
    echo "VM1=$VM1
    VM2=$VM2"
    
    $ sh bar.sh toto tata
    VM1=toto
    VM2=tata

    ;-))
    0
    1. AzN_03 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci beaucoup !!

      Deuxième fois que tu m'aide !!!

      Une autre petite question ^^
      Dans ma boucle j'aimerai faire un echo de ma variable VM$a sans spécifié le numéro comment je peut réaliser cela ???


      Merci a toi !
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      #!/bin/bash   
                             
      a=1
      
      for i in $*
      do
      
              eval VM$a=$i
              eval echo VM$a=$i
              ((a++))
      
      done
      0
    3. AzN_03 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
       
      Je me suis mal exprimé dsl ^^

      La sa va marquer sa :

      VM1=toto
      VM2=tata

      Mais mois se que j'aimerais c'est que sa me marque sa :

      toto
      tata

      Sans me servir du $i , j'aimerais que sa m'affiche le contenue de la variable VM$a

      Alors qu'un eval echo VM$a va juste m'afficher VM1. J'aimerais donc afficher en clair $((VM$a)) mais c'est pas la bonne syntax.

      Merci pour ton aide !
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      #!/bin/bash   
                             
      a=1
      
      for i in $*
      do
      
              eval VM$a=$i
              eval echo $VM$i
              ((a++))
      
      done
      0
    5. AzN_03 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
       
      J'ai encore oublier de précisé de quelque chose d'important je ne veut pas me servir de $i ^^ je vais te mettre mon script comme sa tu verra ce que je veux faire :

      #!/bin/bash
      
      a=1
      HOST=192.168.20.31
      CRIT=70
      WARN=85
      STATUS=0
      nagios_plug_dir=/usr/local/nagios/libexec
      SERVEUR="ESX :"
      
      for i in $*
      	do
       	      eval VM$a=$i
      
                     eval VM$a='$nagios_plug_dir/check_esx3.pl -H $HOST -u nagios -p orion808 -N $i -l mem -s usage |cut -d ' ' -f6 | cut -c7-' # cette commande retourne un decimal
      
      		RES=$?
      
      		if [ $RES != 0 ] ; then # Si la commande n'as pas reussie
      				INK=" SNMP problem. No data received from host.";
      				echo $INK;
      				STATUS=3;
      				exit $STATUS;
      		fi
      
      		echo $i
      		eval echo VM$a # C'est ici le soucis je veux faire afficher la valeur decimal
      		a=$(($a + 1))
      	 done
      
      0