나는 파이썬으로 작성된 프레임 워크를 가지고 있으며 테스트 목적으로 기본적으로 서브 프로세스 (일명 쉘 호출)를 원합니다 … RC와 함께 돌아와야합니다! = 0. 존재하지 않는 실행 파일을 호출하려고했습니다. 또는 “종료 1″을 실행하거나; 그러나 어떤 이유로 FileNotFoundError로 변환되었습니다.
따라서 리턴 코드! = 0 ( “신뢰할 수있는”방식으로 트리거하기 위해 수행 할 수있는 다른 작업 : 명령은 미래 시점에서 갑자기 0을 반환해서는 안 됨)을 의미합니다.
exit라는 바이너리를 “검색”할 것으로 생각했지만
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
답변
항상 0이 아닌 종료 코드를 반환 하는 시스템 명령을 찾고 있다면 /bin/false
그것이 효과가있는 것처럼 보입니다. 보낸 사람 man false
:
NAME
false - do nothing, unsuccessfully
SYNOPSIS
false [ignored command line arguments]
false OPTION
DESCRIPTION
Exit with a status code indicating failure.
답변
bash -c "exit RETURNCODE"
“RETURNCODE”를 임의의 숫자로 바꾸고 명령으로 새 리턴 코드를 작성할 수 있습니다 . (RETURNCODE mod 256)에 의해 8 비트 부호없는 정수 (0 … 255)로 잘립니다.
실행 하여 터미널 (!) 내부의 마지막 쉘 명령의 리턴 코드를 확인할 수 있습니다 echo $?
. “$?” variable은 최신 리턴 코드를 포함하고 “echo”는 표준 출력으로 인쇄합니다.
답변
좀 더 테스트 한 결과, 제 문제는 “리눅스”쪽이 아니라는 것을 알았습니다.
파이썬에는 모듈 shlex가 있습니다. 명령 문자열을 “분할”하는 데 사용해야합니다. shlex.split()
“bash exit 1” 을 호출 한 결과를 사용하도록 서브 프로세스 호출을 변경하면 필요한 정보가 제공됩니다.