Сравнение строк в bash не работает
Привет, я новичок в скриптах bash. Просто написал эту простую программу, но она бросает ошибку.
#!/bin/bash
os=`uname -o`
echo $os
if ["$os"=="GNU/Linux"] ; then
echo "Linux"
else
echo "Windows"
fi
Using == or-eq для обоих случаев я получаю следующую ошибку, и она печатает else condn.
./ostype.sh: строка 3: [GNU / Linux= = GNU / Linux]: нет такого файла или каталога
Windows
Баш версий : GNU bash, начиная с версии 3.2.48(1)-релиз (архитектуру x86_64-Сью-Линукс-гну)
2 ответов
попробовать
if [ "$os" = "GNU/Linux" ]
обратите внимание на места, и один =
.
[
- это программа, а остальные аргументы!
использовать =
для сравнения строк. Смотри:http://tldp.org/LDP/abs/html/comparison-ops.html
кроме того, должно быть пространство вокруг квадратных скобок и оператора сравнения, т. е.
if [ "$os" = "GNU/Linux" ]; then
^ ^ ^ ^ ^
| | | | |
\-\-----\-\-----------\-- (need spaces here)