Ubuntu – Quand faut-il pousser des variables entre guillemets dans des conditions booléennes? [fermé]

Les deux expressions booléennes suivantes sont-elles identiques?

 if [ -n $1 ] ; then

if [ -n "$1" ] ; then
 

Sinon – Quand devez-vous mettre une variable entre guillemets?

Meilleure réponse

  • Voici un exemple qui devrait démontrer la différence

     ~$ t="alfa beta"
    ~$ if [ -n $t ] ; then echo OK ; fi 
     bash: [: alfa: binary operator expected
    ~$ if [ -n "$t" ] ; then echo OK ; fi 
     OK
    ~$ ls blah*
    blah1 blah2 blah3
    ~$ t="blah*"
    ~$ if [ -n "$t" ] ; then echo OK ; fi 
     OK
    ~$ if [ -n $t ] ; then echo OK ; fi
    bash: [: too many arguments
     

    En d’autres termes, avec des guillemets, le $t est développé une seule fois et mis entre guillemets comme argument unique pour test  ( [ est juste un alias pour test ). Sans guillemets, il est remplacé par le contenu de $t