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=50
和 X=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)
我编写了以下 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=50
和 X=200
。由于某些未知原因,它不适用于 X=400
。知道为什么吗?该脚本永远不会等待 2 分钟,它会继续提交作业。
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)