Получение ошибки "команда не найдена" при сравнении двух строк в 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 выдаст синтаксическую ошибку.
посмотрите на следующий пост, чтобы понять, почему нам нужны пробелы вокруг [ ]
:
другой связанный пост, который говорит о других элементах синтаксиса, которым также нужны пробелы:
наконец, этот пост говорит о разнице между [[ ]]
и [ ]
:
по теме: