gpt4 book ai didi

bash 脚本 - 如果在函数中 checkin ,则先前命令的退出状态不同

转载 作者:行者123 更新时间:2023-11-29 09:38:37 25 4
gpt4 key购买 nike

我不明白 - 如果我检查函数中命令的退出状态并存储在局部变量中,我总是得到答案 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=4

4的状态是正确的。

最佳答案

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

local 语句分成两部分:

local output
local mysql_status

output=`service mysql status`
mysql_status=$?

关于bash 脚本 - 如果在函数中 checkin ,则先前命令的退出状态不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com