一行で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これは成功時の終了状態、失敗時はゼロ以外の状態です。したがって、Pythonスクリプトがうまく書かれていて、失敗したときにゼロ以外の状態で終了する場合は、次のようにするだけで十分です。

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

関連情報