2014-07-23 5 views
2

bash 스크립트에서 오류를 제공하는 명령으로 새 터미널을 시작합니다. 그러나 나는 그 오류 코드를 잡아 수있을 것 같지 않습니다BASH 자식 터미널에서 부모 터미널에 오류 코드가 표시됩니까?

#! /bin/bash 
gnome-terminal -x bash -c "cat dksdamfasdlm" 
echo $? 

출력 :

0 

그래서 나는 gnome-terminal 명령의 오류 코드 대신 cat 하나를 얻을. 한 가지 제안은 코드로 파일을 만들고 부모 bash에서 읽는 것입니다. (새 터미널에)

#! /bin/bash 
gnome-terminal -x bash -c "cat dksdamfasdlm; echo $?; sleep 2" 

출력 : : 왜 그

cat: dksdamfasdlm: No such file or directory 
0 

인 문제는 여전히 수 및 오류 코드를도 그런 식으로 읽을 것이다? 이 문제를 해결하는 방법에 대한 제안? 난 그냥 부모 bash에서 새 터미널에 오류를 잡아 어떻게 든 싶습니다.

+0

왜 이렇게하고 싶습니까? 그놈 터미널 자체를 테스트하지 않는 한 터미널을 통하지 않고 직접 스크립트를 실행해야합니다. – l0b0

+0

응용 프로그램 (Docker)에 대해 다른 터미널을 여는 BASH 스크립트를 만들려고합니다. 그러나 나는 가능한 모든 오류를 잡기를 원합니다. – Pithikos

+0

좀 더 배경을 줄 수 있습니까? 나는 아직도 당신이 단순히 스크립트를 실행하는 것보다는 터미널을 사용하고자하는 이유를 이해하지 못한다. – l0b0

답변

1

을 시작한 직후 그놈 터미널이 종료됩니다. 예를 들어 gnome-terminal -x sleep 10으로 실행하면 분명합니다. 명령이 끝나기를 기다리지 않으므로 리턴 코드가 명령의 리턴 코드가 될 방법이 없습니다. 전경에서 프로세스를 유지하기 위해 gnome-terminal --help-all에 옵션을 찾을 수 없습니다.

두 번째 질문에 대해서는 quoted을 두 번 사용 했으므로 $?이 확장되어 이 실행되기 전에이 실행됩니다. 이 작업을해야합니다 :

gnome-terminal -x bash -c 'cat dksdamfasdlm; echo $?; sleep 2' 

PS를 다음 -x 옵션은 variousreferences 많은 도움이되지 않는 그놈 터미널 3.8.4의 gnome-terminal --help-all에 문서화되지 않으며, 동일한 의미하고있는 -e 옵션이 이유에 대한 좋은 설명이 없다 다른 구문.