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