[shell] commande dans une variable

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 :-)
Configuration: Windows XP
Firefox 2.0.0.11

5 réponses

  1. Si tu tapes:
    ${COMMANDE}

    ???
    0
    1. 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
      1. Modérateur
        Salut,

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

        set -xv

        Lances ton script et affiches nous la sortie verbeuse ;-))
        0
        1. 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
          1. 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