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}
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
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
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