Bash 函数不能 return 大数

Bash function can't return large numbers

我编写了以下 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 进程的

Return 值(和 shell 函数的行为类似)只能在单个字节的范围内,即。 e. 0…255(在某些情况下,范围是 -128…+127)。

对于更大范围内的 return 值,我建议使用标准输出作为提供结果的通道:

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

qs=$(getqsubnumber)