我不明白这一点--如果我在一个函数中检查命令的退出状态,并将其存储在一个局部变量中,我总是得到答案0。从函数外部,我得到了正确的退出状态。
#!/bin/bash
function check_mysql()
{
local output=`service mysql status`
local mysql_status=$?
echo "local output=$output"
echo "local status=$mysql_status"
}
check_mysql
g_output=`service mysql status`
g_mysql_status=$?
echo "g output=$g_output"
echo "g status=$g_mysql_status"输出为:
local output=MySQL is running but PID file could not be found..failed
local status=0
g output=MySQL is running but PID file could not be found..failed
g status=44的状态是正确的。
发布于 2012-05-01 21:03:39
在函数中,在service mysql status命令之后运行local命令。它就是返回0的那个。您正在丢失service命令的返回状态。
将local语句拆分为两部分:
local output
local mysql_status
output=`service mysql status`
mysql_status=$?https://stackoverflow.com/questions/10397949
复制相似问题