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?

39
demandé sur codeforester 2013-11-01 22:53:16

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"
71
répondu anubhava 2013-11-01 18:55:05

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:

5
répondu codeforester 2018-09-13 22:33:20