셸 기능을 사용하지 않고 종료 코드 억제

셸 기능을 사용하지 않고 종료 코드 억제

쉘 함수를 사용하거나 쉘을 시작하지 않고 인수로 제공된 다른 명령의 종료 코드를 무효화할 수 있는 표준 명령이 있습니까?

system()호출된 종료 코드를 기반으로 작업을 수행하는 프로그램이 있습니다 . 종료 코드를 통해 상태를 반환하는 다른 프로그램이 있습니다. 하지만 내가 호출하는 프로그램은 내가 원하는 것과 반대되는 결과를 반환합니다. 간단하게 다음과 같이 지정할 수도 있지만 bash -c '....'더 쉬운 방법이 있습니까?

PS 예, 아마도 그다지 중요하지 않은 것을 최적화하려고 노력하고 있다는 것을 알고 있습니다. 하지만 대부분 유닉스가 거의 모든 것에 대한 명령을 갖고 있는 것 같아서 간단한 음수 종료 코드 명령을 찾을 수 없는 이유가 무엇인지 궁금합니다.

답변1

AFAIK 표준 도구 세트에 없습니다. 표준 도구 세트에 있는 것 sh(및 그 것 !)이 원하는 것에 가장 가깝습니다.

system("sh", "-c",  "! \"$0\" \"$@\"", "cmd", "arg1", "arg2"...)

명령을 실행할 수 있는 다른 도구에는 이 기능(find, env, xargs...)이 없거나 셸 자체를 호출(ed, awk...)하여 명령을 실행합니다.

unice의 초기 버전에는 "if" 명령이 있었지만 Bourne 쉘이 확장된 제어 명령문을 가져오면서 이 명령은 사라졌습니다.

답변2

이 시도:

[ ! `<yourFirtsCommand>` ]

귀하의 명령으로 바꾸십시오 <yourFirtsCommand>. 올바른 따옴표를 사용하는 것이 좋습니다!
[ ] 관련 문제를 방지하려면 다음을 사용할 수 있습니다.

test ! `<yourFirtsCommand>`

관련 정보