This question already has answers here:

Return value in a Bash function
(9个答案)
Shell function does not return values greater than 255
(2个答案)
我写了下面的bash脚本:
function getqsubnumber {
# Return how many simulations ($qsubnumber) are currently running

qsubnumber=`qstat | grep p00 | wc -l`

return $qsubnumber
}


getqsubnumber
qs=$?

if [ $qs -le $X ]
    then
        echo 'Running one more simulation'
        $cmd # submit one more job to the cluster
else
    echo 'Too many simulations running ... Sleeping for 2 min'
    sleep 120

我的想法是在集群上提交作业。如果同时运行的作业超过X个,我想等待2分钟。
该代码适用于X=50X=200。不知什么原因,它不适用于X=400。知道为什么吗?脚本从不等待2分钟,它会继续提交作业。

最佳答案

unix进程的返回值(shell函数的作用类似于一个)只能在单个字节的范围内,即0…255(在某些上下文中,范围是-128…+127)。
为了返回更大范围的值,我建议使用stdout作为通道来提供结果:

function getqsubnumber {
  # Return how many simulations ($qsubnumber) are currently running
  qstat | grep p00 | wc -l
}

qs=$(getqsubnumber)

关于linux - Bash函数无法返回大量数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42567714/

10-16 23:49