Подтвердить что ты не робот

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

В целом мой Script:

#!/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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

В примечании, связанном с пробелами, также требуется [ ]:

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

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

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

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

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


Связанный:

Ответ 3

Просто используйте #!/bin/bash на вершине скрипта, если вы используете скрипты bash, например: if [[ $partition == "/dev/sda2" ]]; then, чтобы сравнить строку и запустить скрипт с ./scriptname.sh или bash scriptname.sh