bash中的字符串比较不起作用

时间:2012-12-19 09:31:59

标签: bash shell

您好我是bash脚本的新手。刚刚编写了这个简单的程序,但它正在抛出错误。

#!/bin/bash
os=`uname -o`
echo $os
if ["$os"=="GNU/Linux"] ; then
    echo "Linux"
else
    echo "Windows"
fi 

对于这两种情况使用==或-eq我收到以下错误并且正在打印else condn。

./ ostype.sh:line 3:[GNU / Linux == GNU / Linux]:没有这样的文件或目录

Bash版本:GNU bash,版本3.2.48(1)-release(x86_64-suse-linux-gnu)

2 个答案:

答案 0 :(得分:24)

尝试

if [ "$os" = "GNU/Linux" ]

注意空格和单=

[实际上是一个程序,其余的都是参数!

答案 1 :(得分:7)

使用=进行字符串比较。请参阅:http://tldp.org/LDP/abs/html/comparison-ops.html

此外,方括号和比较运算符周围应该有一个空格,即

if [ "$os" = "GNU/Linux" ]; then 
  ^ ^     ^ ^           ^  
  | |     | |           |
   \-\-----\-\-----------\-- (need spaces here)