Obteniendo el error “comando no encontrado” al comparar dos cadenas en Bash

Toda mi secuencia de comandos es actualmente esta:

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

y si entro

 TestSelect.sh 

yo obtengo

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

¿Cómo puedo arreglar esto?

Esto es un problema:

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

Se requieren espacios entre corchetes, utilízalo así:

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

En una nota relacionada, también se requieren espacios alrededor de [ ] :

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

Tenga en cuenta que las variables deben estar entre comillas dobles dentro de [ ] para evitar la división de palabras y englobamiento. Las comillas dobles también ayudan cuando ninguna de las variables que se comparan no está configurada; de lo contrario, Shell arrojará un error de syntax.

Mira la siguiente publicación para entender por qué necesitamos espacios alrededor de [ ] :

  • ¿Por qué debería haber un espacio después de ‘[‘ y antes ‘]’ en Bash?

Otra publicación relacionada que habla sobre otros elementos de syntax que también necesitan espacios:

  • ¿Por qué a veces se necesita espacio en blanco alrededor de metacaracteres?

Finalmente, este post habla sobre la diferencia entre [[ ]] y [ ] :

  • ¿Cuál es la diferencia entre los corchetes simples y dobles en Bash?