셸 프로 그래 밍 기초: 논리 연산

요즘 이곳 을 오래 돌아 다 녔 군요. 이제 겨우 나 왔 습 니 다. 자신의 이 해 를 나 누 세 요.
종료 상태
한 프로그램 이 실행 되면 반드시 두 가지 결과 만 있 을 것 이다. 성공 하거나 실패 하거나 성공 한 결 과 는 모두 같다. 실패 의 원인 은 각각 다르다.성공 과 실패 프로그램 이 모두 종료 되 어야 합 니 다. 성공 은 시스템 에 성공 적 인 정 보 를 되 돌려 주 고 실패 한 것 도 시스템 에 실 패 를 알 립 니 다.이 성공 하거나 실패 한 상 태 는 종료 상태 입 니 다.
상태 코드 종료
프로그램 이 종료 할 때 시스템 에 종료 상 태 를 나타 내 는 숫자 를 되 돌려 줍 니 다. 이 숫자 는 종료 상태 코드 라 고 합 니 다.종료 상태 코드 는 '?' 에 저 장 됩 니 다.변수 중 echo $를 사용 할 수 있 습 니까?스 크 립 트 를 볼 때 exit [n] 방식 으로 스 크 립 트 가 종 료 될 때의 상태 코드 를 지정 할 수 있 습 니 다. (비고: exit 는 스 크 립 트 를 즉시 종료 합 니 다. 이 때 종료 상태 코드 는 exit 에서 지정 합 니 다. exit 최종 상태 코드 가 지정 되 지 않 으 면 마지막 명령 에 달 려 있 습 니 다)
조건 부 테스트
조건 테스트 는 어떤 수요 가 만족 하 는 지 판단 하 는 데 쓰 인 다.두 숫자 가 같은 지, 두 문자열 이 같은 지... 조건 테스트 의 형식 은 다음 과 같 습 니 다. test EXPRESSION [EXPRESSION] [[EXPRESSION] 조건 테스트 는 여전히 테스트 결 과 를 나타 내 는 값 을 되 돌려 줍 니 다.
논리 연산
와: 가짜 가 있 으 면 반드시 가짜 또는: 진실 이 있 으 면 반드시 진짜 가 아니다: 진실 이 있 으 면 가짜 가 있 으 면 진실 이다.command1 && command2
논리 와.command 1 이 올 바 르 게 실행 되 어야 command 2 를 실행 하고 command 1 이 올 바 르 게 실행 되 지 않 으 면 command 2 를 실행 하지 않 습 니 다.bash 에 서 는 미리 정 의 된 변수 인 '$?' 를 통 해 명령 이 올 바 르 게 실행 되 었 는 지 여 부 를 판단 합 니 다. '$?' 의 값 이 0 이면 이전 명령 이 올 바 르 게 실행 되 었 음 을 나타 내 고 다른 임 의 값 은 올 바 르 게 실행 되 지 않 았 음 을 나타 냅 니 다.
[root@lori ~]$·echo hello && ls hello
hello
ls: cannot access hello: No such file or directory
[root@lori ~]$·ls hello && echo hello
ls: cannot access hello: No such file or directory

왜, 논리 와, 가짜 가 있 으 면 반드시 가짜 입 니 다. 즉, command 1 이 가짜 일 때 이 표현 식 command 1 & command 2 가 가짜 로 확정 되 었 을 때 command 2 는 실행 할 필요 가 없습니다. (이 때 command 2 의 진짜 와 가짜 표현 식 이 모두 가짜 이기 때 문 입 니 다)
command1 || command2

논리 적 또는 command 1 이 가짜 일 때 만 command 2 를 실행 합 니 다.
[root@lori ~]$·ls hello || echo hello
ls: cannot access hello: No such file or directory
hello
[root@lori ~]$·echo hello || ls hello
hello

여전히 위의 것 입 니 다. 논리 적 이거 나 진실 이 있 으 면 진실 이 어야 합 니 다. 즉, command 1 이 사실 일 때 이 표현 식 command 1 | | command 2 가 진짜 command 2 이면 실행 할 필요 가 없습니다 (결과 에 영향 을 주지 않 습 니 다)
!!!!중요 해!!!!01 에 너무 관심 갖 지 마, 진위 에 만 관심 갖 지 마, 01 에 만 관심 갖 지 마, 진위 에 만 관심 갖 지 마, 진위 에 만 관심 갖 지 마.
왜 줄곧 반환 치 문 제 를 말 하지 않 았 습 니까? 이것 은 구덩이 이기 때문에 나 는 안에서 하마터면 나 오지 못 할 뻔 했 습 니 다.먼저 제 결론 을 말씀 드 리 겠 습 니 다. 명령 의 반환 값 (종료 상태 코드, 조건 테스트 도 명령 입 니 다) 은 프로그램의 종료 상 태 를 대표 합 니 다. 진짜 가 아 닙 니 다.
자, 아래 내용 이 너무 복잡 해 요.1. 진 위 는 1 과 0, 2 에 대응 하고 명령 의 실행 성공 은 진실 이 며 실 패 는 가짜 3 이 고 반환 값 은 0 또는 0 이 아 닌 (조건 테스트 는 0 과 1 만 되 돌려 줍 니 다) 4. 반환 값 의 0 과 0 이 아 닌 것 은 프로그램의 종료 상태 입 니 다. 0 은 실행 성공 을 나타 내 고 0 이 아 닌 것 은 실패 5, 논리 연산 에서 반환 값 은 진 위 를 판단 하 는 데 사 용 됩 니 다.
예 를 들 어 command 1 | | command 2
command 1 실 행 → 반환 값 이상 command 1 은 이미 검색 반환 값 을 끝 냈 습 니 다 → 반환 할 가치 가 있 습 니 다 → 논리 연산 시작
조건 부 테스트 에 서 는 반환 값 이 0 과 1 밖 에 되 지 않 아 헷 갈 리 기 쉬 우 므 로 조건 부 테스트 가 명령 이라는 설정 을 받 아들 일 수 있다 면 이해 하기 쉬 울 것 이다.
command 1 & & command 2 | | command 3 는 command 3 이전의 내용 을 명령 으로 간주 하면 쉽게 이해 할 수 있다

좋은 웹페이지 즐겨찾기