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