성공하더라도 임의의 핵심 *nix 유틸리티가 0이 아닌 종료 상태를 반환하도록 "속일" 수 있습니까?

성공하더라도 임의의 핵심 *nix 유틸리티가 0이 아닌 종료 상태를 반환하도록 "속일" 수 있습니까?

저는 Connectwise Automate(이전의 LabTech)를 사용하여 bash 스크립트를 실행하고 원격 시스템에서 bash 명령을 실행하고 있습니다. 이러한 시스템은 Linux와 MacOS입니다. CWA(Connectwise Automate)에는 *nix 시스템에 대한 몇 가지 특별한 동작이 있습니다. 여기서 명령이나 표현식이 상태 코드 0으로 종료되면 스트림(stdout 또는 stderr)에 관계없이 모든 출력이 "OK"라는 단어로 대체됩니다. 0이 아닌 종료 상태를 반환하면 CWA의 원격 터미널과 스크립트 출력에 출력이 올바르게 표시됩니다. 출력 교체 동작이 종료 코드를 기반으로 한다는 명시적인 확인을 받지는 못했지만 이것이 매우 가능하다고 믿습니다.

간단한 예를 들어, 적절한 예외를 echo "Test"반환 OK하고 발생시킵니다. ls ./no/such/directory이는 CWA의 오랜 문제이며 공급업체와 협력하면 명령 출력을 디스크의 파일로 파이프하고 CWA 관련 기능을 사용하여 해당 파일을 읽지 않으면 해결 방법이나 긍정적인 결과를 얻을 수 없습니다. 그러나 파일에 기록된 명령의 출력은 종종 OK.


내가 시도한 것

나는 가능한 많은 해결책을 찾고 시도했습니다. 내가 찾은이것질문은 특히 를 다루고 less있으며 주장에 따라 less다릅니다 -K. 내 구현이 올바르지 않을 수도 있지만 bash -c및 호출에 성공하지 못한 채 솔루션의 일부를 조정하려고 했습니다 . trap나는 또한 비슷한 것을 시도했고 아마도 (내 의견으로는) 평가되기 전에 종료 코드 0으로 반환되는 첫 번째 명령으로 인해 echo "Test" && false반환되었습니다 .OKfalse


문제 재진술

bash특히 또는 를 통해 호출될 때 임의의 유틸리티를 "동축"(말하자면)하여 sh내가 선택한 종료 상태로 반환하거나 그렇지 않으면 0이 아닌 종료 상태를 반환하고 여전히 주어진 유틸리티의 출력이 적중되는 것이 가능합니까? stdout/표준 오류?

관련 정보