Obtendo o erro “comando não encontrado” ao comparar duas sequências no Bash

Todo o meu script é atualmente este:

#!/bin/sh clear; blanko=""; # Dummy-Variablen variable=Testvariable; if [[$variable == $blanko]]; then echo "Nichts da!" else echo $variable fi 

e se eu entrar

 TestSelect.sh 

eu recebo

 /usr/bin/TestSelect.sh: line 6: [[Testvariable: command not found Testvariable 

Como posso consertar isso?

Isso é problema:

 if [[$variable == $blanko]]; 

Espaços são necessários entre colchetes, use-o da seguinte forma:

 [[ "$variable" == "$blanko" ]] && echo "Nichts da!" || echo "$variable" 

Em uma nota relacionada, os espaços são necessários por volta de [ ] também:

 if [ "$variable" = "$blanko" ]; then # more code here fi 

Observe que as variables ​​precisam ser colocadas entre aspas duplas dentro de [ ] para evitar a divisão de palavras e globbing. Aspas duplas também ajudam quando uma das variables ​​que estão sendo comparadas não estão definidas – o shell lançará um erro de syntax.

Veja o seguinte post para entender por que precisamos de espaços em torno de [ ] :

  • Por que deveria haver um espaço depois de ‘[‘ e antes ‘]’ no Bash?

Outra postagem relacionada que fala sobre outros elementos de syntax que também precisam de espaços:

  • Por que o espaço em branco às vezes é necessário em torno de metacaracteres?

Finalmente, este post fala sobre a diferença entre [[ ]] e [ ] :

  • Qual é a diferença entre colchetes simples e duplos no Bash?