gpt4 book ai didi

linux - shell 脚本 : Count returned from function is not correct

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:41 26 4
gpt4 key购买 nike

在下面的 shell 脚本中,我连接到数据库并获取计数值。在下面的代码中,我没有得到正确的计数值。相反,它返回 185(随机 int 值)但应该返回的实际计数值是 2233。如果我将 return 替换为 echo,它会打印出正确的 2233 值。但是 alertCount 变量被赋予了 0 值。

findAlertCount(){
(
count=$(sqlplus -s ${DBA_ORACLE_USER}/${DBA_ORACLE_PWORD}@${ORACLE_SID} <<END
#connect ${DBA_ORACLE_USER}/${DBA_ORACLE_PWORD}@${ORACLE_SID}
set serveroutput on
set linesize 1000
set heading off
set feedback off
SELECT count(1)
FROM mytable
WHERE mycolumn IS NOT NULL;
exit;
END
)
return "$count"
)
}

findAlertCount
alertCount=$?
echo "alertCount" $alertCount

//如果使用返回,则打印 185。如果使用 echo,则打印 0。

最佳答案

使用 printf 并在您的函数中检索“count”的最终值作为标准输出。

#!/bin/sh


findAlertCount()
{
count=2233
printf "$count"
}

alertCount=$(findAlertCount)

printf "alertCount $alertCount\n"

此外,我观察到您正在使用括号 () 将函数体作为子 shell 调用。如果目的只是将命令描述为一个集合或列表,则可以尝试使用方括号 {},以便程序的其余部分可以访问 count 的值。

关于linux - shell 脚本 : Count returned from function is not correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32922589/

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