我有这个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")
}
可能出现什么问题?
答案 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"
等