首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash脚本-如果在函数中选中,则前一个命令的退出状态会有所不同

问bash脚本-如果在函数中选中,则前一个命令的退出状态会有所不同
EN

Stack Overflow用户
提问于 2012-05-01 20:59:18
回答 1查看 964关注 0票数 2

我不明白这一点--如果我在一个函数中检查命令的退出状态,并将其存储在一个局部变量中,我总是得到答案0。从函数外部,我得到了正确的退出状态。

代码语言:javascript
复制
#!/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"

输出为:

代码语言:javascript
复制
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=4

4的状态是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-01 21:03:39

在函数中,在service mysql status命令之后运行local命令。它就是返回0的那个。您正在丢失service命令的返回状态。

将local语句拆分为两部分:

代码语言:javascript
复制
local output
local mysql_status

output=`service mysql status`
mysql_status=$?
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10397949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档