[Bash Renommer argument

Fermé
AzN_03 Messages postés 10 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 3 juin 2010 - Modifié par jipicy le 12/05/2010 à 16:34
AzN_03 Messages postés 10 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 3 juin 2010 - 15 mai 2010 à 20:52
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

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 mai 2010 à 16:26
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
AzN_03 Messages postés 10 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 3 juin 2010
12 mai 2010 à 16:39
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 mai 2010 à 16:44
#!/bin/bash   
                       
a=1

for i in $*
do

        eval VM$a=$i
        eval echo VM$a=$i
        ((a++))

done
0
AzN_03 Messages postés 10 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 3 juin 2010
12 mai 2010 à 16:54
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
12 mai 2010 à 17:01
#!/bin/bash   
                       
a=1

for i in $*
do

        eval VM$a=$i
        eval echo $VM$i
        ((a++))

done
0
AzN_03 Messages postés 10 Date d'inscription mercredi 5 mai 2010 Statut Membre Dernière intervention 3 juin 2010
12 mai 2010 à 19:17
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