• [^] # Re: eval expr...

    Posté par . En réponse au message Quoter une variable contenant des arguments de ligne de commande. Évalué à 2.

    Cet ordre d'options et l'absence de = marche très bien quand tu tapes les options sans utiliser de variables. Le problème survient uniquement quand je cherche à passer plusieurs arguments --exclude dans une variable, avec guillemets et astérisques inclus. D'ailleurs la page de man ne documente pas de = et les exemples plus haut qui marchent (mon script du début ainsi que les réponses de NBaH et benja) ne l'utilisent pas non plus. Quant à ta syntaxe, j'ai essayé sur un exemple simple : (sans astérisque, puisque je m'intéresse ici uniquement à la syntaxe tar)

    (Au lieu de faire le backup de /home à chaque fois, je choisis un sous-répertoire contenant peu de fichiers.)

    #!/bin/bash
    liste_exclusion="~/Notes/Calendar"
    # OK
    eval tar cfz /tmp/backup.tar.gz ~/Notes --exclude "~/Notes/Calendar"
    eval tar cfz /tmp/backup.tar.gz ~/Notes --exclude "$liste_exclusion"
    # NOK, l'exclusion n'est pas faite
    eval tar cfz /tmp/backup.tar.gz ~/Notes --exclude="~/Notes/Calendar"
    eval tar cfz /tmp/backup.tar.gz --exclude="~/Notes/Calendar" ~/Notes
    eval tar cfz /tmp/backup.tar.gz --exclude="$liste_exclusion" ~/Notes
    
    

    J'ai essayé avec et sans guillemets dans chacun des appels à eval, le résultat est le même.