simple.sh
인터넷에서 스크립트 출력을 가져와 종료 코드를 확인하고 싶습니다 . 나는 OSX를 사용하고 있다
#!/bin/bash
$(curl -s http://127.0.0.1:8000/simple.sh)
if [ -z "$?" ]; then
echo "Good"
exit 0
else
echo "Bad"
exit 1
fi
단순.sh:
#!/bin/bash
exit 0
내가 겪고 있는 문제는 다음과 같습니다.
./test.sh: line 2: #!/bin/bash: No such file or directory
Bad
답변1
[ -z "$?" ]
귀하의 생각은 정확하지만 반환 코드 문자열이 다음과 같은지 확인하기 위해 반환 코드를 확인하기 위해 잘못된 조건을 정의한 것 같습니다.비어 있는아니면. curl
귀하 의 의지는 출력에 관계없이 값을 전달합니다. 즉 , 스크립트의 조건을 $?
주장하지 않는다는 의미입니다 . 스크립트에서 직접 반환된 반환 코드를 if
확인하고 싶을 수도 있습니다.curl
$(curl -s http://127.0.0.1:8000/simple.sh)
if [ "$?" -eq 0 ]; then
또는 연산자를 사용하지 않고 더 간결하게 작성하여 조건 test
에서 반환 코드를 직접 사용할 수 있도록 합니다.if
if curl -s http://127.0.0.1:8000/simple.sh 2>&1 >/dev/null; then
답변2
그것이 우아하다고 말할 수는 없지만 이것이 내가 할 방법입니다:
#!/bin/bash
curl -s http://127.0.0.1:8000/simple.sh | /bin/bash -s >/dev/null 2>&1
rc=$?
if [ -z "$rc" ]
then
echo "Good"
exit 0
else
echo "Bad"
exit 1
fi
내가 보기엔 당신이 하는 방식이 당신이 하는 일과 비슷한 것 같아요$( ... )구조. 한번도 시도한 적이 없으며 bash가 이렇게 작동하는지 확실하지 않습니다.
컬이 파일의 내용을 에코하도록 하고 이를 bash로 파이프하면 컬 명령의 텍스트 출력을 해석하고 bash가 이를 실행할 수 있습니다.
다음과 같이 시도하면 동일한 결과를 얻을 수 있을 것입니다.
$( cat /[path]/simple.sh ); echo $?