링크 ux 셸 논리 연산 자,논리 식 상세 소개

논리 연산 자
논리 볼 륨
의사 표시
1.
파일 과 디 렉 터 리 에 대한 검색 논리 볼 륨!
-f
상용!"파일"이 존재 하 는 지 확인 하기 eg:if[-f filename]
-d
상용!"디 렉 터 리"가 존재 하 는 지 확인 합 니 다.
-b
"block 파일"인지 확인 합 니 다.
-c
"character 파일"인지 확인 합 니 다.
-S
"socket 태그 파일"인지 확인 합 니 다.
-L
"symbolic link 파일"인지 확인 합 니 다.
-e
"무언 가"가 존재 하 는 지 확인 하 세 요!
2.
프로그램 에 대한 논리 볼 륨!
-G
GID 가 실행 하 는 프로그램 이 가지 고 있 는 지 확인 합 니 다.
-O
UID 에서 실행 되 는 프로그램 이 있 는 지 확인 합 니 다.
-p
프로그램 간 에 정 보 를 전송 하 는 name pipe 나 FIFO 여 부 를 조사 합 니 다.(솔직히 잘 모 르 겠 습 니 다!)
3.
파일 속성 조사!
-r
읽 을 수 있 는 속성 인지 확인 합 니 다.
-w
기록 할 수 있 는 속성 인지 확인 합 니 다.
-x
실행 가능 한 속성 인지 확인 합 니 다.
-s
"비 공백 파일"인지 확인 합 니 다.
-u
"SUID"속성 이 있 는 지 확인 하기
-g
"SGID"속성 이 있 는 지 확인 하기
-k
"sticky bit"속성 이 있 는 지 확인 합 니 다.
4.
두 파일 간 의 판단 과 비교;예 를 들 어[test file 1-nt file 2]
-nt
첫 번 째 파일 은 두 번 째 파일 보다 새 롭 습 니 다.
-ot
첫 번 째 파일 은 두 번 째 파일 보다 낡 았 다.
-ef
첫 번 째 파일 과 두 번 째 파일 은 같은 파일(link 와 같은 파일)입 니 다.
5.
논리 적"과(and)""또는(or)"
&&
논리 적 AND
||
논리 적 OR
연산 기호
대표 적 의미
=
다음 과 같 습 니 다:정형 또는 문자열 비교[]에 있 으 면 문자열 일 수 밖 에 없습니다.
!=
다음 과 같 지 않 습 니 다:정형 또는 문자열 비교[]에 있 으 면 문자열 일 수 밖 에 없습니다.
<
보다 작 음:정형 비 교 는[]에서 표시 문자열 을 사용 할 수 없습니다
>
다음 에 적용 되 는 것 보다 크다:정형 비 교 는[]에서 표시 문자열 을 사용 할 수 없다
-eq
정형 비교
-ne
정형 비교
-lt
보다 작 음:정형 비교
-gt
보다 큰 응용:정형 비교
-le
정형 비교
-ge
정형 비교
-a
양측 모두 성립(and)논리 표현 식 Ca 논리 표현 식
-o
일방 성립(or)논리 식 코 논리 식
-z
빈 문자열
-n
비 어 있 는 문자열 2,논리 식 test 명령 사용 방법:test EXPRESSION 예:
 
[root@localhost ~]# test 1 = 1 && echo 'ok'
ok
[root@localhost ~]# test -d /etc/ && echo 'ok'
ok
[root@localhost ~]# test 1 -eq 1 && echo 'ok'
ok
[root@localhost ~]# if test 1 = 1 ; then echo 'ok'; fi
ok
주의:모든 문자 와 논리 연산 자 는'빈 칸'으로 직접 분리 되 어 연결 할 수 없습니다.표현 식 간소화
 
[]
[root@localhost ~]# [ 1 -eq 1 ] && echo 'ok'
ok
[root@localhost ~]# [ 2 < 1 ] && echo 'ok'
-bash: 2: No such file or directory
[root@localhost ~]# [ 2 \< 1 ] && echo 'ok'
[root@localhost ~]# [ 2 -gt 1 -a 3 -lt 4 ] && echo 'ok'
ok
[root@localhost ~]# [ 2 -gt 1 && 3 -lt 4 ] && echo 'ok'
-bash: [: missing `]'

: [] , >,< , , acill 。 <> , || && -a[and] Co[or]
[]표현 식
 
[root@localhost ~]# [ 1 -eq 1 ] && echo 'ok'
ok
[root@localhost ~]$ [[ 2 < 3 ]] && echo 'ok'
ok
[root@localhost ~]$ [[ 2 < 3 && 4 > 5 ]] && echo 'ok'
ok
주의:[]연산 자 는[]연산 자의 확장 일 뿐 입 니 다.<,>기호 연산 을 지원 할 수 있 습 니 다.전의 문자 가 필요 하지 않 습 니 다.문자열 로 크기 를 비교 합 니 다.논리 연산 자 지원:||&3,성능 비교 bash 의 조건 식 에는 거의 같은 효 과 를 가 진 기호 와 명령 이 세 개 있 습 니 다:test,[]와[]].보통 if[]를 사용 하 는 습관 이 있 습 니 다.then 이런 식 으로그리고[]의 등장 은 ABS 의 말 에 따 르 면 호 환><와 같은 연산 자 를 위 한 것 이다.다음은 그들의 성능 을 비교 한 결과[]가 가장 빠 른 것 으로 나 타 났 다.$time (for m in {1..100000}; do test -d .;done;) real 0m0.658s user 0m0.558s sys 0m0.100s $ time (for m in {1..100000}; do [ -d . ];done;) real 0m0.609s user 0m0.524s sys 0m0.085s $ time (for m in {1..100000}; do [[ -d . ]];done;) real 0.0.311s user 0.0.275s sys 0.0.036s 는 저 버 전 bash 와 sh 의 호환성 을 고려 하지 않 은 상태 에서[[]를 사용 하 는 것 은 호환성 이 강하 고 성능 이 빠 르 며 조건 연산 을 할 때 이 연산 자 를 사용 할 수 있다.

좋은 웹페이지 즐겨찾기