Bash函数不能返回大数

alo*_*oha 0 linux bash shell terminal cluster-computing

我写了以下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
Run Code Online (Sandbox Code Playgroud)

我的想法是我在集群上提交工作.如果有多个X作业同时运行,我想等待2分钟.

该代码适用于X=50X=200.由于某些未知原因,它不起作用X=400.知道为什么吗?该脚本永远不会等待2分钟,它会继续提交作业.

Alf*_*lfe 7

Unix进程的返回值(以及shell函数就像一个)只能在单个字节的范围内,即0 ... 255(在某些情况下,范围是-128 ... + 127).

要返回更大范围内的值,我建议使用stdout作为通道来提供结果:

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

qs=$(getqsubnumber)
Run Code Online (Sandbox Code Playgroud)