当我在.bashrc中使用`uname`时,为什么会出现错误?

时间:2012-05-30 20:02:02

标签: linux bash uname

在我的.bashrc中,我有以下代码

if [`uname` == "Linux"]; then
    echo "It worked"
else
    echo "It didn't work"
fi

但是当我找到.bashrc时,我得到以下结果

  

[Linux:命令未找到

     

它不起作用

扼杀,[不是拼写错误,它是错误的一部分。如果我注释掉if语句,那么错误就会消失,所以我很确定它是错误的来源。另外,如果我将Linux更改为linux,则错误也会更改为小写。

如果我回复uname,我会得到Linux。

要获取我的.bashrc,我使用了source .bashrc,并且还通过在命令行终端上键入bash启动了一个新的bash会话。

我认为检查操作系统类型并不难,但我似乎无法找出.bashrc的正确语法。

我看不出我做错了什么,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:9)

你忘了方括号后的空格。第一行必须如下所示:

if [ `uname` == "Linux" ]; then

在您的版本中,如果没有空格,[uname的输出将连接成一个名为[Linux的可执行文件,该文件在PATH中不存在。

答案 1 :(得分:4)

抨击间距的挑剔。您需要条件

中的空格
if [ `uname` == "Linux" ]; then
    echo "It worked"
else
    echo "It didn't work"
fi