Shell 종료 상태 사용
많은 Linux 명령은 사실 C 언어 프로그램이다. C 언어에 익숙한 독자들은 알다시피main () 함수의 마지막에return 0이 있다. 만약에 프로그램이 중간에서 종료하려면 exit 0을 사용할 수 있다. 이것이 바로 C 언어 프로그램의 종료 상태이다.다른 프로그램이 이 프로그램을 호출할 때, 이 종료 상태를 포착할 수 있다.
if 문장의 판단 조건은 본질적으로 말하면 명령의 퇴출 상태를 판단하는 것이다.
관례에 따라 종료 상태가 0이면'성공'을 나타낸다.프로그램 실행이 끝났고 아무런 문제가 없었다는 것이다.0을 제외한 나머지 모든 종료 상태는 실패입니다.
이를'규정'이 아니라'관례'라고 하는 이유는 예외가 있기 때문이다. 예를 들어 diff 명령은 두 파일의 차이를 비교하는 데 사용되기 때문이다.'차별이 없는'파일은 0,'차이를 찾은'파일은 1, 무효 파일 이름은 2로 되돌아간다.
프로그래밍 경험이 있는 독자들은 셸의 이 부분은 당신이 익숙한 다른 프로그래밍 언어와 정반대입니다. C 언어, C++, 자바, Python에서 0은'가짜', 다른 값은'진짜'를 나타냅니다.
셸에서 명령의 종료 상태를 얻을 수 있는 방법은 다음과 같습니다. $?가장 흔히 볼 수 있는 일종이다.이전 섹션 "Shell if else"에서 () 를 사용하여 수학적 계산을 하였으니, 종료 상태를 살펴보자.다음 코드를 참조하십시오.
#!/bin/bash
read a
read b
(( $a == $b ));
echo " :"$?
실행 결과 1:26
26
종료 상태: 0
실행 결과 2:
십칠
39
종료 상태: 1
종료 상태 및 논리 연산자 조합
Shell if 문장의 신기한 점은 논리 연산자를 사용하여 여러 개의 종료 상태를 조합하면 여러 조건을 한 번에 판단할 수 있다는 것이다.
셸 논리 연산자
연산자
형식 사용
설명
&&
expression1 && expression2
논리와 연산자는expression1과expression2가 동시에 성립될 때 전체 표현식이 성립된다.
만약expression1의 퇴출 상태가 0이라고 검출된다면expression2를 더 이상 검출하지 않을 것이다. 왜냐하면expression2의 퇴출 상태가 무엇이든지 전체 표현식은 반드시 성립되지 않을 것이고 검출도 이런 일이 많기 때문이다.
||
expression1 || expression2
논리나 연산자, expression1과 expression2 두 표현식 중 하나만 성립되면 전체 표현식이 성립된다.
만약expression1의 퇴출 상태가 1이라고 검출된다면expression2를 더 이상 검출하지 않을 것이다. 왜냐하면expression2의 퇴출 상태가 무엇이든 전체 표현식은 반드시 성립되고 검출도 이런 일이 많기 때문이다.
!
!expression
논리적 비연산자, "반향"효과에 해당.만약expression이 성립된다면 전체 표현식은 성립되지 않습니다.expression이 성립되지 않으면 전체 표현식이 성립됩니다.
[인스턴스] 사용자가 입력한 URL을 파일에 기록합니다.
#!/bin/bash
read filename
read url
if test -w $filename && test -n $url
then
echo $url > $filename
echo " "
else
echo " "
fi
셸 스크립트 파일이 있는 디렉터리에 텍스트 파일을 새로 만들고 urls라고 명명합니다.txt, 그리고 셸 스크립트를 실행합니다. 실행 결과는 다음과 같습니다.urls.txtL
http://jb51.net/shell/ L
쓰기 성공
test는 셸 내장 명령으로 파일이나 문자열을 검사할 수 있습니다. 그 중에서 -w 옵션은 파일이 존재하고 쓸 수 있는지, -n 옵션은 문자열이 비어 있는지 검사합니다.다음 섹션에서는 Shell test에 대해 자세히 설명합니다.
> 은 리디렉션을 표시합니다. 기본적으로 echo는 컨트롤러에 출력됩니다. 출력 결과를 파일로 리디렉션합니다.
이 Shell 퇴출 상태에 대한 사용에 관한 글은 여기까지입니다. 더 많은 Shell 퇴출 상태에 대한 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.