기능: 파일 유형 및 비교 값을 확인합니다.
테스트의 다양한 매개 변수 및 사용법.
테스트 표현식 1-a 표현식 2
1 및 표현식 2 가 모두 참인 경우 값은 true 입니다.
테스트 표현식 1-o 표현식 2
1 또는 표현식 2 가 true 인 경우 이 값은 true 입니다.
테스트–n 문자열
또는
문자열을 테스트합니다
문자열 STRING 의 길이가 0 이 아닌 경우 True 입니다.
테스트–z 문자열
문자열 길이가 0 이면 이 값은 true 입니다.
테스트 문자열 1 = 문자열 2
STRING 1 및 STRING2 의 시간 값이 같을 때 true 입니다.
테스트 문자열 1! = STRING2
STRING 1 과 STRING2 의 다른 값이 참인 경우.
테스트 정수 1-eq 정수 2
정수 1 이 정수 2 인 경우 이 값은 true 입니다.
테스트 정수 1- 범용 전기 정수 2
INTEGER 1 이 INTEGER2 보다 크거나 같은 경우 True 입니다.
테스트 정수 1-gt 정수 2
정수 1 정수 2 보다 크면 True 입니다.
테스트 정수 1- 정수 2
INTEGER 1 이 INTEGER2 보다 작거나 같을 때 True 입니다.
테스트 정수 1-lt 정수 2
정수 1 정수 2 보다 작은 경우 True 입니다.
테스트 정수 1-ne 정수 2
INTEGER 1 이 INTEGER2 와 같지 않을 때 True 입니다.
테스트 파일1–ef 파일 2
1 파일과 파일 2 의 장치 번호와 inode 번호가 같으면 True 입니다 (자세한 내용은 Linux 파일 학습 노트 참조).
테스트 파일1–nt 파일 2
1 파일이 파일 2 의 새 값보다 수정된 경우.
테스트 파일1–ot 파일 2
파일 1 의 수정 시간이 파일 2 의 이전 값보다 참일 때.
테스트 -b 파일
파일이 존재하고 내용이 block 유형입니다.
테스트–c 파일
파일이 있으며 문자 유형입니다.
테스트 -d 파일
파일이 존재하며 디렉토리입니다.
테스트–e 파일
파일이 있습니까?
테스트–f 파일
파일이 존재하고 정규식 유형의 문서입니다.
테스트–g 파일
파일이 존재하고 SGID (set-group-ID) 인 sgid 입니다. 자세한 내용은 다음 학습 노트를 참조하십시오.
테스트–g 파일
파일이 존재하고 유효한 그룹 id 가 소유합니다. 자세한 내용은 다음 학습 노트를 참조하십시오.
테스트–h 파일
파일이 존재하고 심볼릭 링크입니다 (다음 학습 노트 참조).
테스트 -k 파일
파일이 존재하고 고정 비트가 설정되어 있습니다. 자세한 내용은 다음 학습 노트를 참조하십시오.
테스트–l 파일
파일이 존재하고 심볼릭 링크입니다.
-O 파일 테스트
파일이 존재하며 유효한 사용자 id 가 소유합니다.
테스트–p 파일
파일이 존재하고 명명된 파이프입니다 (다음 학습 노트 참고).
-r 파일 테스트
파일이 존재하고 읽기 권한이 부여되었습니다.
파일을 테스트합니다
파일이 존재하고 크기가 0 보다 큽니다.
파일을 테스트합니다
파일이 존재하고 소켓입니다.
테스트–테스트 문제 해결
터미널에서 파일의 설명자 FD 를 엽니다.
-u 파일 테스트
파일이 존재하고 SUID 가 설정되었습니다.
테스트–w 파일
파일이 존재하고 쓰기 권한이 부여되었습니다.
테스트–x 파일
파일이 존재하고 실행 권한이 부여되었습니다.
--
Expr
Expr 은 Linux 의 수동 명령줄 카운터로, 몇 가지 기본적인 표현식 값 연산을 완료하는 데 도움이 됩니다. 또한 문자열 처리 도구이기도 합니다.
(1) 정수 연산
$expr ARG 1 | ARG2
$ exprarg1& ARG2
$ exprarg1< ARG2
$ exprarg1< = ARG2
$expr ARG 1 = ARG2
$expr ARG 1! = ARG2
$ exprarg1> = ARG2
$ exprarg1> ARG2
$expr ARG 1+ARG2
$ exprarg1–arg2
$expr ARG 1 * ARG2
곱셈을 사용할 때는 백슬래시를 사용하여 이스케이프해야 합니다.
$expr ARG 1% ARG2
(2) 문자열 조작
$ expr length "XXX "// 문자열 길이를 계산합니다.
$ expr substr "이것은" pos length// pos 비트에서 길이를 자르는 부분 문자열입니다.
$ expr index "tesr" e// e 가 주 문자열에서 처음 나타나는 위치를 가져옵니다.
(3) 증분 개수
예
주기 =3
Loop =' expr $ loop+ 1' 입니다
Echo $loop
결과는 4 입니다. 코드의 두 번째 줄에서 역방향 따옴표를 사용하면 셸은 역방향 따옴표 안의 내용을 시스템 명령으로 사용합니다. 이렇게 하면 명령줄에 expr $loop+ 1 을 입력하는 것처럼 이 명령의 반환 결과가 이 루프에 할당됩니다.
(4) 패턴 일치 (정규식 패턴을 기준으로 문자열 일치)
콜론 옵션을 지정하여 문자열의 문자 수를 계산합니다. 。 * 모든 문자가 0 회 이상 반복됨을 나타냅니다.
& gtVALUE=account.doc
& gt 표현식 $ 값:'. *'
여덟;팔
패턴을 사용하여 추출하는 expr 에서 문자열 일치 작업을 사용할 수 있습니다. Doc 파일.
$ expr $ value: "\ (. * \). 의사
장부
(5) 기타
+토큰
토큰이 키워드든 연산자든 문자열로 해석됩니다.
지식 확장:
따옴표의 역할
1 큰따옴표 ("") 를 참조하십시오
1) $ (달러 기호), ` (역따옴표) 및 \ (역슬래시) 를 제외한 모든 문자 또는 문자열을 참조하려면 ""를 사용합니다. 큰따옴표는 셸이 변수 이름, 명령 대체, 백슬래시 이스케이프 등을 나타내는 세 문자를 특수하게 처리하는 것을 방해하지 않습니다.
Eg:name = gezn;; Echo "사용자 이름: $ name "// 는 사용자 이름 gezn 을 인쇄합니다.
Echo' 날짜는' date+date-%d-%m-%y' "//날짜 예: 03-05-2009 가 인쇄됩니다.
Echo-e "$ user \ t $ uid "//gezn 500 이 인쇄됩니다.
2) 공백이 포함된 새 문자열을 검색하려면 큰따옴표를 자주 사용합니다.
작은따옴표 2 개 ("")
1) 문자열을 작은 따옴표로 묶으면 dayi9nhao 에 있는 문자열에 있는 모든 특수 문자의 특별한 의미가 가려집니다.
2) 예: echo-e' $ USER \ t $ UID '/$ USER $ UID 가 인쇄됩니다 ("-e" 옵션으로 인해 차단되지 않음).
Echo' USER \ t $ UID '// 는 $USER\t$UID 를 인쇄합니다.
역따옴표 3 개 (` `)
1) 셸은 역방향 따옴표 안의 내용을 시스템 명령으로 사용하고 해당 내용을 실행합니다. 이 방법을 사용하여 출력을 변수로 바꿉니다.
2) 예: a=`date+date-%d-%m-%Y` // 인쇄 날짜를 03-05-2009 로 설정합니다.
4. 백슬래시 (\)
1) 다음 문자에 특별한 의미가 있는 경우 백슬래시는 셸이 그 의미를 오해하지 않도록 하여 특별한 의미를 가린다.
2) 종속 문자에는 특별한 의미가 포함됩니다. *+$ ` "|?
3) 문자열을 인쇄할 때 8 진수 문자 (ASCII 해당 문자) 를 추가하려면 앞에 백슬래시를 추가해야 합니다. 그렇지 않으면 셸이 일반 숫자로 사용됩니다.
예: bj = 베이징; Echo "variable \ $ bj = $ bj "// 는 $bj = Beijing 변수를 인쇄합니다.
--
셸 특수 변수
셸에는 특별한 의미를 가진 몇 가지 셸 변수가 미리 정의되어 있으며, 해당 값은 셸에 의해서만 실제 상황에 따라 할당될 수 있으며 사용자가 재설정할 수 없습니다. 셸의 특수 변수에는 해당 위치와 일부 시스템 변수가 포함됩니다.
(1) 공통 위치 변수:
셸 스크립트 이름을 제외한 명령행의 실제 매개변수 수입니다.
$? 마지막 명령을 실행한 후의 반환 값 ("종료 코드" 라고도 함). 이것은 십진수입니다. 대부분의 셸 명령이 성공적으로 실행되면 반환 값은 0 입니다. 실행에 실패하면 0 이 아닌 값이 반환됩니다.
현재 프로세스의 프로세스 번호입니다.
$! 마지막 백그라운드 명령에 해당하는 프로세스 번호는 1~5 자리 숫자로 구성된 숫자 문자열입니다.
$-현재 셸에 설정된 실행 플래그 이름으로 구성된 문자열입니다. 예를 들면 다음과 같습니다.
명령줄 Shell -xv 셸에 대한 플래그 -x 및 -v (추적 출력용) 를 설정합니다.
$ * 는 명령줄에 실제로 제공된 모든 매개 변수 문자열을 나타냅니다 (9 개 매개 변수로 제한되지 않음).
$ @ 기본 기능은 $ * 와 동일하지만 따옴표 안에 사용되며 각 매개 변수는 따옴표로 반환됩니다.
$0 스크립트 이름
$ 1 ...$9 n 번째 매개 변수
다음 AAA BBB 는 변수 이름입니다.
${aaa:-bbb} $aaa 가 비어 있거나 정의되지 않은 경우 값은 $bbb 입니다. 그렇지 않으면 값은 $aaa 입니다.
${aaa:+bbb} $aaa 가 비어 있지 않으면 값은 $bbb 이고, 그렇지 않으면 비어 있습니다.
${aaa:=bbb} $aaa 가 비어 있지 않으면 $aaa 값이 사용되고, 그렇지 않으면 $bbb 값이 사용되고 값이 지정됩니다 (aaa=bbb).
${aaa:3} aaa=abcdefg 인 경우 ${aaa:3} 의 값은' defg' 이고 substr 과 동등하며 카운트는 0 부터 시작합니다.
${aaa:3:2} 위와 같습니다. $ {AAA: 3: 2} 의 값은 de 로 substr 에 해당합니다.
${#aaa} 문자열 $aaa 의 길이입니다.
(2) 공통 시스템 변수:
$HOME 사용자의 홈 디렉토리
$USER 사용자 이름
$ TERM 사용자가 속한 $ 그룹의 이름입니다
$PATH 기본 검색 경로
$HOSTNAME 의 호스트 이름
$ TERM tz 시간대
$MAIL 을 저장하는 $ TERM 의 경로 이름
연습생:
#! /bin/bash
반향 $0
에코 $ *
Echo $@
Echo $#
에코 $ $
에코 $ _
터미널 창에서 다음을 수행합니다.
。 /test.sh-a-b–c/home
。 /test.sh
-a -b -c /home
-a -b -c /home
사
3250
/홈 페이지
$ * 와 $ @ 를 구분하여 다음 test.sh 스크립트를 작성합니다.
#! /bin/bash
기능 테스트 마크
{
반향 "$# args"
}
Testargs "$* "
테스트 마크 "$ @" 입니다
테스트 플래그가 설정되지 않았습니다
터미널 창에서 다음을 수행합니다.
。 /test.sh -a -b /home
1 args // 분명히 하나만 있습니다. 해석된 매개 변수 대신 문자열 $ * 이 전달됩니다.
3 args //$@ 결과가 정확하도록 따옴표를 일치시켜야 합니다.
#! /bin/bash
기능 테스트 마크
{
반향 "$# args"
}
Testargs $*
Testargs $@
테스트 플래그가 설정되지 않았습니다
마찬가지로, 다음과 같은 것들이 있습니다.
。 /test.sh -a -b /home
매개 변수 3 개
매개 변수 3 개
저자: 아가. J.
출처: blogs.com/aga-J. 。