Les conditions && en bash

bonjour, voici un petit script

#!/bin/bash

if [ -n $1 ] && [ $1 = “mdp” ]
then
echo "tu m’as dit mdp !"
else
echo "dit moi le mot"
fi

lorsque je le lance sans argument j’obtiens une erreur

3: [: =: unexpected operator
dit moi le mot

Mais quand je lance avec l’argument mdp tout va bien! je ne comprends pas pourquoi?

Bonjour essaye

if [[ -n $1 && $1 = “mdp” ]]

une execution avec ou sans argument dans ce cas donne :

test.sh: 2: test.sh: [[: not found
dit moi le mot

j’arrive a faire avancer le schmilblik en testant l’existante avec un -z puis en traitant de manière séparé en imbricant un deuxième if ou avec un case, par contre comme ca ca marche pas et je sais pas pourquoi :confused: .

 #!/bin/bash

 if [ -n "${1}" ] && [ "${1}" = "mdp" ]
 then
     echo "tu m'as dit mdp !"
 else
     echo "dit moi le mot"
 fi
1 J'aime

En shell il faut toujours utiliser “”. Par exemple, pour être le plus portable possible:

if [ x"bla" = "x" ]; then echo "empty"; fi
1 J'aime

Je vous remercie, ce que je ne comprends pas encore c’est le
${}, c’est un équivalent de $1? je ne sais pas quoi chercher pour comprendre quand écrire sous cette forme.

Bonjour

J’aime bien ce document pdf

2 J'aime