셸 프로 그래 밍 기초: test 명령
10153 단어 linux
명령 형식:
# 格式1
test condition
# 格式2,注意中括号前后都有空格
[ condition ]
명령 설명:
condition
은 test 명령 이 테스트 할 일련의 매개 변수 와 값 입 니 다. 성립 되면 상태 코드 0
를 종료 하고 그렇지 않 으 면 非0
이 므 로 분기 와 순환 에서 test 명령 을 사용 하여 프로 세 스 를 제어 할 수 있 습 니 다).test 명령 은 세 가지 조건 을 판단 할 수 있 습 니 다.
test 명령 을 사용 하 는 가장 흔 한 상황 은 두 수 치 를 비교 하 는 것 이다.다음 표 와 같다.
비교 하 다.
묘사 하 다.
n1 -eq n2
n1 이 n2 와 같 는 지 확인 합 니 다.
n1 -ge n2
n1 이 n2 보다 크 거나 같 는 지 확인 합 니 다.
n1 -gt n2
n1 이 n2 보다 큰 지 확인
n1 -le n2
n1 이 n2 보다 작 거나 같 는 지 확인 합 니 다.
n1 -lt n2
n1 이 n2 보다 작 는 지 확인 합 니 다.
n1 -ne n2
n1 이 n2 와 같 지 않 은 지 검사 합 니 다.
2.1 수치 비교 예시
# $?用于返回上个命令退出状态码
#@@@@ -eq测试
# 1 -eq 2条件不成立,因此退出状态码非0(此处为1)
[root@vm14 ~]# test 1 -eq 2 ; echo $?
1
# 1 -eq 1条件成立,因此退出状态码为0
[root@vm14 ~]# test 1 -eq 1 ; echo $?
0
#@@@@ -ne测试
# 条件1 -ne 1不成立,因此退出状态码为非0(此处为1)
[root@vm14 ~]# [ 1 -ne 1 ]; echo $?
1
# 添加1 -ne 2成立,因此退出状态码为0
[root@vm14 ~]# [ 1 -ne 2 ]; echo $?
0
2.2 쌍 괄호 사용
이중 괄호 명령 은 비교 과정 에서 고급 수학 표현 식 을 사용 할 수 있 도록 합 니 다.형식:
(( expression ))
이중 괄호 명령 기호기호.
묘사 하 다.
val++
후 증
val–
후 감
++val
먼저 증가 하 다
–val
가감
!
논리 적 반대
~
위구 반
**
멱 연산
<<
왼쪽 변위
>>
오른쪽 변위
&
위 불 화
|
비트 불 또는
&&
논리 와
||
논리
# 双括号中的空格时可以省略的
[root@vm14 ~]# (( 2>1 ));echo $?
0
[root@vm14 ~]# (( 2<1 ));echo $?
1
3. 문자열 비교
조건 부 테스트 는 문자열 값 을 비교 할 수 있 습 니 다.다음 표 와 같다.
비교 하 다.
묘사 하 다.
str1 = str2
str 1 이 str 2 와 같 는 지 확인 합 니 다.
str1 != str2
str 1 이 str 2 와 다른 지 확인 합 니 다.
str1 < str2
str 1 이 str 2 보다 작 는 지 확인 합 니 다.
str1 > str2
str 1 이 str 2 보다 큰 지 확인 합 니 다.
-n str1
str1 의 길이 가 0 이 아 닌 지 확인 합 니 다.
-z str1
str 1 의 길이 가 0 인지 확인 합 니 다.
3.1 동일 여부
#@@@@ =测试
# 条件"str1" = "str2"条件不成立,因此退出状态码非0(此处为1)
[root@vm14 ~]# [ "str1" = "str2" ]; echo $?
1
# 条件"str1" = "str1"条件成立,因此退出状态码为0
[root@vm14 ~]# [ "str1" = "str1" ]; echo $?
0
3.2 크기 판단
문자열 이 정렬 보다 크 거나 작 을 때 > < 기호 진행
转义
#@@@@ >< 测试
# 条件"str1" > "str2"不成立,因此退出状态码为非0(此处为1)
[root@vm14 ~]# [ "str1" \> "str2" ]; echo $?
1
# 条件"str1" < "str2"成立,因此退出状态码为0
[root@vm14 ~]# [ "str1" \< "str2" ]; echo $?
0
# 在比较大小写时,test命令与sort结果相反,test是正常逻辑(ASCII值比较--与java一致)
# sort命令使用的是系统的本地化语言设置中定义的排序顺序。对于英语,本地化设置指定了在排序顺序中小写字母出现在大写字母前
# sort命令认为小写a小于大写A
[root@vm14 ~]# echo -e "A
a" |sort
a
A
# test命令认为小写a大于大写A
[root@vm14 ~]# [ "a" \> "A" ] ; echo $?
0
3.3 비어 있 는 지 여부
#@@@@ -n -z测试
# 当你什么也不传的时候,这里命令退出状态码都为0
[root@vm14 ~]# [ -n ] ; echo $?
0
[root@vm14 ~]# [ -z ] ; echo $?
0
# 因此当你检测变量是否为空时要特别小心,因为你没法判断出来正确的结果
[root@vm14 ~]# [ -n $not_exist ] ; echo $?
0
[root@vm14 ~]# [ -z $not_exist ] ; echo $?
0
# 选择1:加上双引号
[root@vm14 ~]# [ -z "$not_exist" ] ; echo $?
0
[root@vm14 ~]# [ -n "$not_exist" ] ; echo $?
1
# 选择2:使用双方括号: [[ condition ]]
[root@vm14 ~]# [[ -z $not_exist ]] ; echo $?
0
[root@vm14 ~]# [[ -n $not_exist ]] ; echo $?
1
3.4 패턴 일치
쌍방 괄호 명령 은 문자열 비교 에 대한 고급 특성 - 패턴 매 칭 을 제공 합 니 다.쌍방 괄호 명령 의 형식 은 다음 과 같다. [expression]
# 测试字符串root是否以r开头
[root@vm14 ~]# [[ "root" = r* ]]; echo $?
0
# 测试字符串root是否以a开头
[root@vm14 ~]# [[ "root" = a* ]]; echo $?
1
3. 파일 비교
파일 은 리 눅 스 파일 시스템 의 파일 과 디 렉 터 리 상 태 를 테스트 할 수 있 습 니 다.다음 표 와 같다.
비교 하 다.
묘사 하 다.
-d file
파일 이 존재 하 는 지 확인 하고 디 렉 터 리 입 니 다.
-e file
파일 존재 여부 확인
-f file
파일 이 존재 하 는 지 확인 하고 파일 입 니 다.
-r file
파일 이 존재 하고 읽 을 수 있 는 지 확인 합 니 다.
-s file
파일 이 비어 있 는 지 확인 하기
-w file
파일 이 존재 하고 쓸 수 있 는 지 확인 합 니 다.
-x file
파일 이 존재 하고 실행 가능 한 지 확인 합 니 다.
-O file
파일 이 존재 하 는 지 확인 하고 현재 사용자 소유 입 니 다.
-G file
파일 이 존재 하 는 지 확인 하고 기본 그룹 이 현재 사용자 와 같 습 니 다.
file1 -nt file2
file 1 이 file 2 보다 새 것 인지 확인 합 니 다.
file1 -ot file2
file 1 이 file 2 보다 오래된 지 확인 합 니 다.
3.1 파일 또는 디 렉 터 리
# 创建测试用目录和文件
[root@vm14 ~]# mkdir testdir
[root@vm14 ~]# touch testdir/testfile
# 判断是否为目录
[root@vm14 ~]# [ -d testdir ]; echo $?
0
[root@vm14 ~]# [ -d testdir/testfile ]; echo $?
1
# 判断是否为文件
[root@vm14 ~]# [ -f testdir ]; echo $?
1
[root@vm14 ~]# [ -f testdir/testfile ]; echo $?
0
# 删除测试目录
[root@vm14 ~]# rm -rf testdir/
3.2 파일 권한 검사
# 创建测试文件
[root@vm14 ~]# touch testfile
# 查看文件权限,此时具备读写权限,不具备执行权限
[root@vm14 ~]# ll testfile
-rw-r--r--. 1 root root 0 2020-04-12 13:26:09 testfile
# 读、写、执行权限测试
[root@vm14 ~]# [ -r testfile ]; echo $?
0
[root@vm14 ~]# [ -w testfile ]; echo $?
0
[root@vm14 ~]# [ -x testfile ]; echo $?
1
# 删除文件
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.