Linux 클러스터에서 Grid Engine을 사용하고 있습니다. 저는 다양한 프로그램과 다양한 입력 파일을 사용하여 많은 작업을 실행하고 있습니다. 각 프로그램 및 입력 파일 쌍에 대해 여러 개의 특정 작업 스크립트를 만들고 싶지 않습니다. 대신 프로그램 이름과 입력 파일만 지정할 수 있기를 원합니다 qsub
.
그러므로 나는 사용할 수 있습니다qsub job.sh <programNameAndLocation> <inputFileName>
두 개의 매개변수가 필요 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 $?