Erreur "commande introuvable" lors de la comparaison de deux chaînes dans Bash
Tout mon Script est actuellement le suivant:
#!/bin/sh
clear;
blanko="";
# Dummy-Variablen
variable=Testvariable;
if [[$variable == $blanko]];
then
echo "Nichts da!"
else
echo $variable
fi
Et si j'entre
TestSelect.sh
Je reçois
/usr/bin/TestSelect.sh: line 6: [[Testvariable: command not found
Testvariable
Comment puis-je résoudre ce problème?
2 réponses
C'est un problème:
if [[$variable == $blanko]];
Les espaces sont requis entre crochets, utilisez-le comme ceci:
[[ "$variable" == "$blanko" ]] && echo "Nichts da!" || echo "$variable"
Sur une note connexe, des espaces sont également requis autour de [ ]
:
if [ "$variable" = "$blanko" ]; then
# more code here
fi
Notez que les variables doivent être entourées de guillemets doubles à l'intérieur de [ ]
pour éviter le fractionnement de mots et le globbing. Les guillemets doubles aident également lorsque l'une des variables comparées n'est pas définie - shell lancera une erreur de syntaxe sinon.
Regardez le post suivant pour comprendre pourquoi nous avons besoin d'espaces autour de [ ]
:
Un autre article connexe qui parle d'autres éléments de syntaxe qui ont également besoin d'espaces:
Enfin, ce post parle de la différence entre [[ ]]
et [ ]
:
Connexes: