Utiliser le contenu d'une variable pour créer une variable? [BASH] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 26-05-2009 à 11:57:24
Et en faisant un truc du genre VAR_${VAR} ![[:opus dei] [:opus dei]](https://forum-images.hardware.fr/images/perso/opus dei.gif) 
 ![[:mrbrelle] [:mrbrelle]](https://forum-images.hardware.fr/images/perso/mrbrelle.gif)
Marsh Posté le 26-05-2009 à 12:04:03
Pourquoi pas, je pense que cela peut marcher, mais c'est pas exactement le bon résultat 
Marsh Posté le 26-05-2009 à 12:08:14
Et sa marche pas  
 
 
| Citation :   | 
 
 
adrien@adrien-laptop:~$ ./toto 
mOUnt 
./toto: line 7: VAR_MOUNT=salut : commande introuvable 
MOUNT 
./toto: line 9: ${VAR_$VAR} : mauvaise substitution 
Marsh Posté le 26-05-2009 à 12:25:01
| mdvore a écrit : Et sa marche pas  | 
 
 
tu ne sais pas écrire un script, c'est différent. 
 
Je ne saurais que trop te conseiller de lire le man de bash à ce sujet 
Marsh Posté le 26-05-2009 à 12:36:29
moi j'aime bien  ftp://ftp-developpez.com/eric-san [...] ogBash.pdf 
Marsh Posté le 26-05-2009 à 12:52:15
| mdvore a écrit : Et sa marche pas  | 
euh non mais là ... 
| Code : 
 | 
p'tet qu'en scriptant correctement ça irait mieux déjà quoi 
Marsh Posté le 26-05-2009 à 12:52:40
| black_lord a écrit :   | 
 
 
Et oui, on est pas expert en 2min... Je débute effectivement.
Marsh Posté le 26-05-2009 à 13:55:10
Merci mais j'ai trouvé mieux en faite  
 
 
| Code : 
 | 
 
 
Me retourne bien que $MOUNT --> /bin/mount 
 
Merci 
Marsh Posté le 26-05-2009 à 14:04:52
![[:mlc] [:mlc]](https://forum-images.hardware.fr/images/perso/mlc.gif) 
 
 
j'sais pas moi ... mais ça ressemble quand même énormément à ce que je t'ai proposé, mais en moins bien ... après tu fais comme tu veux hein ![[:elessar53] [:elessar53]](https://forum-images.hardware.fr/images/perso/elessar53.gif)
Marsh Posté le 26-05-2009 à 15:03:34
Oui effectivement Wedge, j'ai posté sans avoir lu avec attention ton script car j'avai déja trouvé la soluce a ma question  
 
 
Je vais observer pour améliorer ducoup 
Marsh Posté le 28-05-2009 à 02:25:45
Bon, on sort du bash mais voila une solution courte et concise de le faire en perl : 
 
| Code : 
 | 
Marsh Posté le 26-05-2009 à 11:45:46
Voila le bout de mon script, avec en commentaires mon objectif.
#!/bin/bash
########################################
# Test original actuellement en prod ###
########################################
MOUNT=`which mount 2>/dev/null`
NAIL=`which nail 2>/dev/null`
UMOUNT=`which umount 2>/dev/null`
RSYNC=`which rsync 2>/dev/null`
if [ -z ${MOUNT} ]; then unavailable "mount" EXIT; fi
if [ -z ${NAIL} ]; then unavailable "nail" EXIT; fi
if [ -z ${UMOUNT} ]; then unavailable "umount" EXIT; fi
if [ -z ${RSYNC} ]; then unavailable "rsync" EXIT; fi
################################################
# Avec la boucle for, ce que j'ESSAI de faire ##
################################################
LIST="mount umount rsync nail"
for VAR in ${LIST} do
VAR=`echo "${VAR}"|tr '[:lower:]' '[:upper:]'` #Toutes les variables en majuscules
${VAR}=`which ${VAR} 2>/dev/null` #Vérifie la présence du soft
# Objectif ${VAR} doit être en faite MOUNT pour le premier tour de boucle, voir ci dessous
# MOUNT=`which ${VAR} 2>/dev/null`
if [ -z ${MOUNT} ]; then mafonction "${VAR}" EXIT; fi
export MOUNT # Export OBLIGATOIRE, c'est bien la le soucis.
# Evidement à la place de ${MOUNT} on doit avoir consécutivement ${UMOUNT} ${RSYNC} et enfin ${NAIL}
done
Merci d'avance!
Pour info, ni {!VAR} ni $${VAR} ne font ce que je veux.
Edit: Et je sais qu'il existe une méthode propre et rapide pour le faire, mais impossible de retrouver.
Message édité par mdvore le 26-05-2009 à 12:21:56