한 줄로 Python 스크립트의 응답을 테스트하는 방법은 무엇입니까?

한 줄로 Python 스크립트의 응답을 테스트하는 방법은 무엇입니까?

제가 제공한 예에 따라 조치 과정을 결정하기 위해 다른 스크립트의 결과를 읽고 있습니다.

isOK=$(somepythonscript.py --someParametersHere)

if [ "$isOK" = true ]; then

echo "isOK=$isOK"isOK()의 값을 에코하면 전달한 매개변수에 따라 합계 isOK=true와 .가 표시됩니다.isOK=false

이 효과를 얻기 위해 하나의 명령문으로 결합할 수 있습니까?

if [ $(somepythonscript.py) = true]; then

나는 쉘 스크립팅에 대해 읽었으며 이것이 = true부울 테스트가 아니라 부울처럼 작동한다고 생각하는 사람들의 오해 효과라는 것을 이해했습니다. 안전하다면 나도 거기에 걸겠습니다. 하지만 다른 Python 스크립트의 응답을 테스트하는 더 좋은 방법이 있다면 기꺼이 받아들일 것입니다. 다른 Python 스크립트는 변경할 수 없습니다.

답변1

예, 할 수 있습니다. 이 구성 $(command)command의 출력을 변수로 처리하는 방법이므로 본질적으로 var=$(command)및 then using 과 동일합니다 $var. 따라서 출력을 보존할 필요가 없고 변수가 필요하지 않으면 다음과 같이 충분합니다.

if [ "$(command)" = "true" ]; then
  # do your thing
fi

쉘에 관한 한 true과 는 false단지 문자열( bash귀하의 경우)이라는 점을 기억하십시오. 및 Python 과 달리 True특별한 의미가 없습니다.False

마지막으로, 이 상황에 대한 보다 일반적인 관용구는 명령의 종료 상태를 사용하는 것입니다. 0이는 성공 시 종료 상태이고 실패 시 0이 아닌 상태입니다. 따라서 Python 스크립트가 잘 작성되어 있고 실패 시 0이 아닌 상태로 종료된다면 다음을 수행하는 것만으로도 충분합니다.

if somepythonscript.py --someParametersHere
then
  echo "The script worked!"
else
  echo "the script failed!"
fi

관련 정보