对于任何连续的整数范围,n1..n2
如何使用命令行工具将它们解析为长度为<= n
的范围?
作为一个具体示例,我有一个名为1253..2050
的文件夹的目录。每个文件夹都有一个名为job.sh
的脚本,我可以分批提交20个作业(因为每个节点有20个核心)。因此,我想生成以下命令:
echo {1253..1301}
对于特定情况,我可以使用/bin/ls
或cat runs.txt
生成此整数序列。
qsub -t 1253-1272 array.pbs
qsub -t 1273-1292 array.pbs
qsub -t 1293-1301 array.pbs
答案 0 :(得分:2)
这应该做你想要的。
count=20
off=0
dirs=(*)
while (( (off + count) < ${#dirs[@]} )); do
qsub -t ${dirs[off]}-${dirs[off+count]} array.pbs
((off+=count + 1))
done
if [ $off -ne ${#dirs[@]} ]; then
qsub -t ${dirs[off]}-${dirs[@]: -1} array.pbs
fi
在你的情况下,最后if
可能不是必需的,并且这个循环排序假定范围将是完整的(我假设qsub
也期望)。
答案 1 :(得分:0)
echo {1253..1301} | tr ' ' "\n" | awk '{print "gksub -t " $1 "/job.sh"}'