Сравнение строк в 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)