Grid Engine qsub 作業ファイルを複数のプログラムおよび入力ファイル名に一般化

Grid Engine qsub 作業ファイルを複数のプログラムおよび入力ファイル名に一般化

LinuxクラスタでGrid Engineを使用しています。私はさまざまなプログラムとさまざまな入力ファイルを使用して多くのタスクを実行しています。各プログラムと入力ファイルのペアに対して複数の特定のジョブスクリプトを作成したくありません。代わりに、プログラム名と入力ファイルのみを指定できるようにしたいですqsub

したがって、私は使用することができますqsub job.sh <programNameAndLocation> <inputFileName>

2つのパラメータが必要job.shです。これは素晴らしい作品です。しかし、別の問題があります。私のプログラムは、ジョブを送信するたびに入力したくない非常に長いディレクトリにあるので、エイリアスは確実な選択です。

だから私は次のようなことをしたいqsub job.sh <programNameAndLocationAlias> <inputFileName>

最初にエイリアスを設定しましたが、.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 $?

おすすめ記事