"&&"에 사용되는 동안 명령의 종료 코드를 인쇄하기 전에 "echo $?"메시지가 표시되지 않는 이유는 무엇입니까?


2

쉘에 4를 반환하는이 간단한 C 프로그램이 있다고 가정합니다.

int main()
{
  return 4;
}

내가 그것을 실행할 때, 다음 echo $?, 나는 얻을 것이다. 4기대되는

$ gcc foo.c && ./a.out
$ echo $?
4               <<<< expected

하지만 내가 다음과 같이 할 때 나는 아무것도 얻지 못할거야.

$ gcc foo.c && ./a.out && echo $?
$             <<<< Nothing - WHY????

답변:


5

&& 첫 번째 인수가 성공한 경우, 즉 종료 코드 0으로 끝난 경우에만 두 번째 인수를 실행합니다. 종료 코드 4는 쉘에서 "실패"를 의미하므로 echo 실행되지 않습니다. 시험

gcc foo.c && ./a.out || echo $?

0이 아닌 경우에만 이탈 코드를보고 싶습니다. 항상보고 싶다면 다음을 사용하십시오.

gcc foo.c && ./a.out ; echo $?

해당 프로그램의 이탈 코드를보고 할 수 있습니다. gcc 그것이 0이 아니라면.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.