2010-04-16 5 views

답변

6

종료 상태는 일반적으로 이렇게 암시 사용된다 코드

if IsThereAnyApplesLeft;then 
    echo "Apples left" 
fi 
+0

+1 실제 종료 코드가 실제로 필요하지 않은 한; 하지만 난 일반적으로 외부의 C 싶지 않아 – guns

+0

단락 조건문을 잊지 마세요 : IsThereAnyApplesLeft && "사과 왼쪽" – pra

3

시도를 :

IsThereAnyApplesLeft 
applesLeft=$? 

일반적으로 C 나 자바에서 내가 할 것입니다.

+0

+1 Clever! 그리고 stdout (또는 stderr)에 출력이 없다고 가정하면 리디렉션을 생략 할 수 있습니다. –

-1

$?에 대해 만족스럽지 않은 점은 무엇입니까?

the Advanced Bash Scripting Guide에 따르면 $? 이외의 종료 코드를 얻을 수있는 다른 방법은 없습니다. 글쎄 $? 이외의 다른 방법으로 나열 할 수는 없습니다. 다른 방법이 있다면 위의 링크의 Exit Code 섹션에 분명히 나열되어있을 것입니다.

+0

종료 상태를 유지하려는 경우에만 해당됩니다. 상태를 한 번만 사용하려는 경우 테스트에서 직접 사용할 수 있습니다. if IsThereAnyApplesLeft; echo "예"; else echo "no"; fi' – mpez0

0

두 개의 직접 비교할 수 없다. bash 예제는 "IsThereAnyApplesLeft"라는 실행 파일을 실행하는 서브 프로세스를 생성하고, 해당 서브 프로세스가 종료 될 때까지 기다리고 서브 프로세스의 종료 코드를 변수 $에 저장하는 것입니다. 그래서 당신은 그것을 검사하고 그에 따라 행동 할 수 있습니다.

사실 꽤 복잡한 상호 작용이며 C에서 동일한 작업을 수행하려면 상당한 양의 코드가 필요합니다. 하위 프로세스를 fork()해야하고, 자식 pid에 부모 wait4pid()가 있어야하며, 동시에 "IsThereAnyApplesLeft"파일에서 execl()을 호출하여 자식을 실행하게해야합니다. 쉘 스크립팅 언어를 사용하면 얻을 수있는 이점 중 하나는이 종류의 내용을 숨기는 것입니다.

비교해 보면 C 코드 조각은 C 함수를 호출하고 그 결과를 로컬 변수에 저장하는 것입니다. bash에서 다음과 같이 보입니다.

관련 문제