在bash中没有正确调用函数

时间:2015-11-04 22:07:30

标签: bash

我有这个bash代码,用于检查操作系统是Linux还是Mac,并且我使用函数isWhat从其他函数调用。

[rand.dist.uni.real]

但是,我收到了这些错误:

function isWhat 
{
  if [ `uname` == $1 ];
  then
    return 1
  else
    return 0  
  fi
}

function isLinux 
{
    return isWhat("Linux")
}

function isMac
{
    return isWhat("Darwin")
}

可能出现什么问题?

3 个答案:

答案 0 :(得分:5)

这不是你在bash中调用函数的方式。它们就像其他shell命令一样工作,即:

function isLinux 
{
    isWhat "Linux"
}

此外,return是多余的,该函数将返回上一次命令运行的退出状态。如果你想要明确,你可以这样写:

function isLinux 
{
    isWhat "Linux"
    return $?
}

答案 1 :(得分:0)

这是修复一些错误后的工作代码。

function isWhat 
{
  if [ "`uname`" = $1 ];
  then
    echo 1
  else
    echo 0  
  fi
}

function isLinux 
{
    isWhat "Linux"
}

function isMac
{
    isWhat "Darwin"
}

用法是(假设先前的函数在abc.sh中)

source abc.sh
echo $(isMac)
if [ $(isMac) == 1 ];
then
    echo "A"
fi

我不确定原因,但我必须添加function才能使代码正常工作,我使用的是Mac OS X 10.11.1。

答案 2 :(得分:-1)

你正在错误地调用bash函数。

e.g。

return isWhat("Linux")  

应该是

return isWhat "Linux"