[shell] commande dans une variable

Fermé
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 31 janv. 2008 à 15:51
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 1 févr. 2008 à 10:04
Bonjour,

Je cherche à construire une commande dans une variable afin de l'exécuter après, mais j'ignore comment faire.

Exemple :
Path_to_Exclude=("/dev" "/sys" "/proc" "/usr")
COMMANDE="find / -type d"
for L in $(seq 0 $(expr ${#Path_to_Exclude[*]} - 1));do
COMMANDE=""$COMMANDE" -path "${Path_to_Exclude[$L]}" -prune -o "
done

Ce donne :
find / -type d -path /dev -prune -o -path /sys -prune -o -path /proc -prune -o -path /usr -prune -o -print

Mais ensuite, j'ignore comment exécuter ma commande "$COMMANDE" !!

Merci pour vos lumières :-)
A voir également:

5 réponses

_vince Messages postés 37 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 14 mai 2008
31 janv. 2008 à 16:34
Si tu tapes:
${COMMANDE}

???
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
1 févr. 2008 à 09:31
Ben non çà ne marche pas plus que
`$COMMANDE` : ca me met
find / -type d -path /dev -prune -o -path /sys -prune -o -path /proc -prune -o -path /usr -prune -o -print: Aucun fichier ou répertoire de ce type

:-((
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 897
1 févr. 2008 à 09:42
Salut,

Rajoutes après ta ligne "she-bang" :

set -xv

Lances ton script et affiches nous la sortie verbeuse ;-))
0
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
1 févr. 2008 à 10:01
Heu si j'ai bien compris, j'ai fait :

Path_to_Exclude=("/dev" "/sys" "/proc" "/usr")
COMMANDE="find /"
for L in $(seq 0 $(expr ${#Path_to_Exclude[*]} - 1));do
COMMANDE=""$COMMANDE" -path "${Path_to_Exclude[$L]}" -prune -o"
done
COMMANDE=""$COMMANDE" -print"
echo "$COMMANDE"
${COMMANDE}
set -xv

Ca me donne toujours :

find / -path /dev -prune -o -path /sys -prune -o -path /proc -prune -o -path /usr -prune -o -print
./verif_size.sh: line 16: find / -path /dev -prune -o -path /sys -prune -o -path /proc -prune -o -path /usr -prune -o -print: Aucun fichier ou répertoire de ce type
exit
+ exit


Mais le pire, c'est que je ne parviens même pas à mettre seulement les options de find en variable :

Path_to_Exclude=("/dev" "/sys" "/proc" "/usr")
for L in $(seq 0 $(expr ${#Path_to_Exclude[*]} - 1));do
OPTIONS=""$OPTIONS" -path "${Path_to_Exclude[$L]}" -prune -o"
done
find / -type d "$OPTIONS"
=> find: les chemins doivent précéder l'expression
Usage: find [-H] [-L] [-P] [CHEMIN...] [EXPRESSION]

C'est dingue non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
1 févr. 2008 à 10:04
Ah maintenant çà marche !

En fait au début de mon script j'avais mis par habitude:
IFS=$'\n'


Je ne vois pas cependant en quoi çà posait problème

:-||
0