Получение ошибки "команда не найдена" при сравнении двух строк в Bash

весь мой скрипт в настоящее время таков:

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

а если я войду

TestSelect.sh

Я

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

как я могу это исправить?

2 ответов


это проблема:

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

пробелы требуются внутри квадратных скобок, используйте его следующим образом:

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

в соответствующей заметке пробелы требуются вокруг [ ] а также:

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

обратите внимание, что переменные должны быть заключены в двойные кавычки внутри [ ] чтобы предотвратить разбиение на слова и глоббинг. Двойные кавычки также помогают, когда любая из сравниваемых переменных не задана - в противном случае shell выдаст синтаксическую ошибку.

посмотрите на следующий пост, чтобы понять, почему нам нужны пробелы вокруг [ ]:

другой связанный пост, который говорит о других элементах синтаксиса, которым также нужны пробелы:

наконец, этот пост говорит о разнице между [[ ]] и [ ]:


по теме: