/bin/sh -c
날짜 매개변수를 사용하여 .sh 스크립트를 실행 하려고 합니다 . -c 옵션은 우리 팀에서 사용하는 프레임워크이므로 선택 사항이 아닙니다. 날짜 에포크 매개변수를 내 스크립트에 올바르게 전달할 수 없습니다. 다음 예에서는 파일을 호출하면 매개변수가 작동하지 않는 반면 명령을 직접 전달하면 제대로 작동하는 방법을 보여줍니다. 중간에 있는 명령(-c 제외)은 반복되는 각 숫자에 대한 예상 출력입니다.
root:xxxxx@xxxx:/opt/xxxxxx/software_versions> /bin/sh -c /opt/xxxxxx/software_versions/test2.sh 1 2 3 4
1
2
3
4
root:xxxxx@xxxx:/opt/xxxxxx/software_versions> /bin/sh /opt/xxxxxx/software_versions/test2.sh 1 2 3 4
11
22
33
44
root:xxxxx@xxxxx:/opt/xxxxxx/software_versions> /bin/sh -c 'echo $1 echo $2' a b c d
b echo c
스크립트 내용:
echo 1$1
echo 2$2
echo 3$3
echo 4$4
답변1
당신이 그것을 부르면
software_versions> /bin/sh -c "/opt/xxxxxx/software_versions/test2.sh 1 2 3 4"
-c를 사용하면 하위 쉘을 호출하여 그에 따른 명령을 실행할 수 있습니다. 추가 매개변수는 예측 가능한 방식으로 서브쉘에 전달되지 않습니다. 전체 문자열을 매개변수로 보내면 이 문제를 해결할 수 있습니다.