8

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

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

在这两种情况下使用 == 或 -eq 我都会收到以下错误,它正在打印 else condn。

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

视窗

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

4

2 回答 2

30

尝试

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

注意空格和单个=.

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

于 2012-12-19T09:34:39.810 回答
13

用于=字符串比较。见:http ://tldp.org/LDP/abs/html/comparison-ops.html

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

if [ "$os" = "GNU/Linux" ]; then 
  ^ ^     ^ ^           ^  
  | |     | |           |
   \-\-----\-\-----------\-- (need spaces here)
于 2012-12-19T09:33:51.827 回答