将 Grid Engine qsub 作业文件概括为多个程序和输入文件名

将 Grid Engine qsub 作业文件概括为多个程序和输入文件名

我在 Linux 集群上使用 Grid Engine。我正在使用不同的程序和不同的输入文件运行许多作业。我不想为每对程序和输入文件创建多个特定的作业脚本。相反,我希望能够指定程序名称和输入文件就行qsub

因此我可以使用qsub job.sh <programNameAndLocation> <inputFileName>

其中job.sh需要两个参数。这很好用。但还有另一个问题:我的程序位于一个非常非常长的目录中,我不想每次提交作业时都键入该目录 - 因此别名是一个明显的选择。

所以我想做一些类似的事情qsub job.sh <programNameAndLocationAlias> <inputFileName>

我最初在 my 中设置了别名.bashrc,但收到错误:<programNameAndLocationAlias>: command not found

所以我在 中设置了别名submit.sh。但我遇到了同样的错误。

关于如何让命令qsub job.sh $1 $2也接受别名的想法?

答案1

哈希函数和查找函数可能看起来像

#!/usr/bin/env bash

declare -A proggies

# "aliases" and then the path said should expand to
proggies[foo]=/some/big/long/stupid/path/foo
proggies[bar]=/some/big/long/stupid/path/bar

function qrunner {
    local exe
    exe=${proggies[$1]}
    if [[ -z "$exe" ]]; then
        echo >&2 "no mapping for '$1'"
        return 1
    fi
    # echo here is for debugging, remove when ready to
    # really break things
    echo qsub job.sh "$exe" "$2"
}

# positive test
qrunner bar filename
echo $?

# and also a negative one
qrunner nope filename
echo $?

相关内容