병렬 환경에서 매개변수를 사용하여 스크립트의 여러 인스턴스 실행

병렬 환경에서 매개변수를 사용하여 스크립트의 여러 인스턴스 실행

Openshift에 연결하고 POD에서 일련의 명령을 실행하는 스크립트가 있습니다. 여러 PaaS를 사용하고 있으므로 다른 연결 명령을 사용하여 각 PaaS에서 스크립트를 시작해야 합니다.

이 작업을 순차적으로 수행하면 모든 것이 잘 작동하지만 시간이 오래 걸리므로 모든 명령을 병렬로 시작하는 것을 선호합니다.

동일한 환경에서 병렬로 시작하면 연결이 서로 덮어쓰게 됩니다.

이 글을 찾았어요Bash의 깨끗한 환경에서 프로그램을 실행하는 방법은 무엇입니까?여기서는 유망해 보이지만 시작하려는 스크립트에 인수를 보낼 수 없습니다.

내 코드는 이제 다음과 같습니다.

#Get argument values
...
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
...
#Process resulting output

이 경우 script.sh는 변수로 전송된 매개변수 값을 받지 못하는 것 같습니다.

민감한 정보이기 때문에 스크립트에 작성할 수 없다는 것을 알고 변수 인수를 얻는 방법에 대한 아이디어가 있습니까?

다들 감사 해요,

감사합니다, 진

답변1

--norc두 가지 옵션은 통역사 옵션 --noprofile입니다 . bash즉, 이러한 옵션을 전달하려면 인터프리터를 명시적으로 호출해야 합니다.

env -i bash --norc --noprofile ~/Path/To/script.sh -a1 value -a2 "$variable1" -a3 "$variable2"

여기서는 명령에서 따옴표가 없는 변수 주위에 따옴표를 추가하고 불필요한 중괄호를 제거할 수도 있습니다.

관련 정보