당신은 Q를 사용할 수 없음 종료 상태로 종료 N -하지만 유용하게하기 위해, 당신은 또한 일부 사용할 필요가 분기 및 흐름 제어 :
t
마지막 입력 행을 읽거나 다른 조건부 분기를 수행
한 후 s///
명령이 성공한 경우에만 조건부 분기 (즉, 레이블 로 이동).
표준 종료 상태 값 중 하나와 다른 n 값을 선택하는 것이 가장 좋습니다 .
종료 상태가 0이면 성공을 나타내고 0이 아닌 값은 실패를 나타냅니다. GNU 'sed'는 다음과 같은 종료 상태 오류 값을 반환합니다.
0
Successful completion.
1
Invalid command, invalid syntax, invalid regular expression or a
GNU 'sed' extension command used with '--posix'.
2
One or more of the input file specified on the command line could
not be opened (e.g. if a file is not found, or read permission is
denied). Processing continued with other files.
4
An I/O error, or a serious processing error during runtime, GNU
'sed' aborted immediately.
예를 들어
$ echo "foo.bar" | sed 's/bar.*$//; t; q42' ; echo $?
foo.
0
이므로
$ echo "foo.bar" | sed 's/baz.*$//; t; q42' ; echo $?
foo.bar
42
당신이 패턴 영역의 기본 인쇄를 생략 할 경우, 교체 q
에 의해 Q
(주 Q
GNU 확장이다).
sed
가장 확실하게 종료 상태를 가지고, 그냥 당신이 여기에서 필요하지 않습니다.sed
예를 들어, 쓰기 액세스 권한이 없거나 존재하지 않는 파일 에서 명령을 실행하려고하면sed
0이 아닌 종료 상태로 종료됩니다. 종료 상태는sed
사용자가 지시 한 작업을 수행했는지,echo "foo.bar" | sed 's/pop.*$//'
제대로 실행되었는지 를 나타냅니다 . 로 모든 줄을 삭제했습니다pop
. 그런 줄이 없었기 때문에 명령은 여전히 효과가있었습니다.