쉘 기본 연산자
셸 및 다른 프로그래밍 언어는 운영자 포함한 다양한 지원
- 산술 연산자
- 관계 연산자
- 부울 연산자
- 문자열 연산자
- 테스트 연산자 파일
네이티브 배시 단순한 수학적 연산을 지원하지 않지만, 가장 일반적으로 사용 EXPR 같은 AWK 및 expr에 다른 명령을 통하여 달성 될 수있다.
expr이 식 계산 도구이며, 식 계산기 작업을 완료하는 데 사용합니다.
예를 들어, 두 개의 숫자를 (대신 작은 따옴표로 표시하는`반 인용의 사용을주의 ')를 추가합니다 :
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
스크립트를 실행하여 다음과 같이 출력은 :
两数之和为 : 4
주의해야 할 두 가지 :
- 식 및 연산자는 공간이 있어야합니다 사이에, 예를 들어, 2 + 2는 잘못된 것입니다, 당신은 우리가 대부분의 프로그래밍 언어에 익숙한 동일하지 않습니다하는 2 + 2를 작성해야합니다.
- 전체 표현이 문자는 일반적으로 Esc 키 아래에 작은 따옴표를 사용하지 않는 점에 유의`포함`이 될 수 있습니다.
산술 연산자
다음 표는 10 변수를 가정하면, 변수 b는 20, 일반적인 산술 연산자를 나열합니다 :
운영자 | 설명 | 예 |
---|---|---|
+ | 부가 | `EXPR의 $ a를 + $ b` 결과는 30입니다. |
- | 뺄셈 | `expr이 $ A - $ b` 결과는 -10입니다. |
* | 곱셈 | `EXPR (200)에 대한 \의 * $의 b` 결과를 $. |
/ | 분할 | `EXPR $의 B / $의 A` 결과는 2입니다. |
% | 나머지 | `EXPR $ B 형 % $의 A` 결과는 0입니다. |
= | 할당 | A = $ 변수 B B A의 값을 할당합니다. |
== | 같음. 두 숫자, 사실 같은 수익을 비교하는 데 사용됩니다. | [$ A는 == $ b를] false를 반환합니다. |
! = | 같지 않음. 두 숫자를 비교하는 데 사용은 같은 true를 반환하지 않습니다. | [$ A는! = $ B는] true를 돌려줍니다. |
참고 : 조건식 예를들어, 공간을 대괄호 사이에 배치하고, 포함해야한다:[$ A ==의 $ B가] 잘못하고[$ A ==의 $ B]와같이작성해야합니다.
예
다음과 같은 산술 연산자의 예는 다음과 같습니다
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 val=`expr $a + $b` echo "a + b : $val" val=`expr $a - $b` echo "a - b : $val" val=`expr $a \* $b` echo "a * b : $val" val=`expr $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" if [ $a == $b ] then echo "a 等于 b" fi if [ $a != $b ] then echo "a 不等于 b" fi
스크립트를 실행하여 다음과 같이 출력은 :
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
참고 :
- 곱셈 기호 (*)를 승산을 달성하기 위하여 백 슬래시 (\)의 앞에 추가해야;
- ko. 다음 ko. 파이는 조건문 경우, 후속이 적용됩니다.
- EXPR 구문의 MAC 쉘입니다 : $ ((식)), 표현식이 "*"기호를 탈출해야 할 경우 "\."
관계 연산자
관계 연산자는 문자열의 값이 숫자가 아닌 문자열을 지원하지 않는 디지털 지원한다.
다음 표는 10 변수를 가정하면, 변수 b는 20, 일반적으로 사용되는 관계 연산자를 나열합니다 :
운영자 | 설명 | 예 |
---|---|---|
-eq | 이 숫자는 사실 동일, 동일 반환 검출 여부. | [$ A -eq의 $ B는] false를 반환합니다. |
-ne | 두 숫자가 동일 반환 사실이 아니다, 같은지 여부를 감지. | [$ A -ne $ B는] true를 돌려줍니다. |
-gt | 왼쪽은 오른쪽에서 발견 된 수보다 크고, 그렇다면, 그것은 true를 돌려줍니다. | [$ A -gt $ b를] false를 반환합니다. |
-lt | 번호 검출은 왼쪽의 오른쪽 이하이며, 만약 그렇다면, 그것은 true를 돌려줍니다. | [$ A -lt $ b를] true를 돌려줍니다. |
-ge | 수 있는지 여부를 검출하는 것은 큰 왼쪽 오른쪽 동일하며, 만약 그렇다면 그것은 true를 반환. | [$ A -ge $ b를] false를 반환합니다. |
-le | 왼쪽 오른쪽 이하의 검출 수 있는지의 여부 인 경우 true를 반환. | [$ A -le $ b를] true를 돌려줍니다. |
예
다음과 같은 관계 연산자의 예는 다음과 같습니다
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b" else echo "$a -eq $b: a 不等于 b" fi if [ $a -ne $b ] then echo "$a -ne $b: a 不等于 b" else echo "$a -ne $b : a 等于 b" fi if [ $a -gt $b ] then echo "$a -gt $b: a 大于 b" else echo "$a -gt $b: a 不大于 b" fi if [ $a -lt $b ] then echo "$a -lt $b: a 小于 b" else echo "$a -lt $b: a 不小于 b" fi if [ $a -ge $b ] then echo "$a -ge $b: a 大于或等于 b" else echo "$a -ge $b: a 小于 b" fi if [ $a -le $b ] then echo "$a -le $b: a 小于或等于 b" else echo "$a -le $b: a 大于 b" fi
스크립트를 실행하여 다음과 같이 출력은 :
10 -eq 20: a 不等于 b 10 -ne 20: a 不等于 b 10 -gt 20: a 不大于 b 10 -lt 20: a 小于 b 10 -ge 20: a 小于 b 10 -le 20: a 小于或等于 b
부울 연산자
다음 표는 10 변수를 가정하면, 변수 b는 20, 일반적으로 사용되는 부울 연산자를 나열합니다 :
운영자 | 설명 | 예 |
---|---|---|
! | 비 동작은, 식 그렇지 않으면 true를 반환하고, 거짓 사실을 반환합니다. | [! 거짓] true를 돌려줍니다. |
-o | OR 연산은, 진정한 표현이 true를 반환있다. | true를 반환 [$ A (20) -o $ B 형 -gt 100 -lt]. |
-a | 그리고 작업은 두 표현은 사실 반환하기 전에 해당. | false를 반환 [$ A (20) -a $ B 형 -gt 100 -lt]. |
예
다음과 같이 부울 연산자의 예는 다음과 같습니다
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a -lt 100 -a $b -gt 15 : 返回 true" else echo "$a -lt 100 -a $b -gt 15 : 返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi
스크립트를 실행하여 다음과 같이 출력은 :
10 != 20 : a 不等于 b 10 -lt 100 -a 20 -gt 15 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 false
논리 연산자
다음은 논리 연산자 셸을 설명, 10 변수를 가정하면, 변수 b를 20 :
운영자 | 설명 | 예 |
---|---|---|
&& | 논리 AND | [[$ A 100 -lt && $ -gt 100] B] false를 반환 |
|| | 논리 OR | 반환 진정한 [[$ A 100] -gt 100 || $ B에 -lt] |
예
다음과 같이 논리 연산자의 예는 다음과 같다 :
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi
스크립트를 실행하여 다음과 같이 출력은 :
返回 false 返回 true
문자열 연산자
변수 "ABC", 변수 b는 "EFG는"있는 그대로 가정 일반적으로 문자열 연산자를 사용하여 다음 표 :
운영자 | 설명 | 예 |
---|---|---|
= | 검출이 문자열은 사실 동일, 동일 반환합니다. | [$의 A = $ B는] false를 반환합니다. |
! = | 두 문자열이 동일 반환 사실이 아니다, 같은지 여부를 감지. | [$ A는! = $ B는] true를 돌려줍니다. |
-z | 문자열 길이가 0 0 반환 사실 여부를 검출. | [-z $ A는] false를 반환합니다. |
-n | 문자열 길이가 0, 0이 아닌 리턴 사실 여부를 검출. | [-n $ A는] true를 돌려줍니다. |
STR | 문자열이 비어 있는지 여부를 감지하지 빈 반환 사실. | [$ A]는 true를 돌려줍니다. |
예
다음과 같이 문자열 연산자의 예는 다음과 같습니다
#!/bin/bash # author:本教程 # url:www.w3write.com a="abc" b="efg" if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a = $b: a 不等于 b" fi if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ -z $a ] then echo "-z $a : 字符串长度为 0" else echo "-z $a : 字符串长度不为 0" fi if [ -n $a ] then echo "-n $a : 字符串长度不为 0" else echo "-n $a : 字符串长度为 0" fi if [ $a ] then echo "$a : 字符串不为空" else echo "$a : 字符串为空" fi
스크립트를 실행하여 다음과 같이 출력은 :
abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空
테스트 연산자 파일
파일 테스트 연산자는 유닉스 파일의 다양한 속성을 검출하기 위해 사용된다.
다음과 같이 검출 기술 특성 :
운영자 | 설명 | 예 |
---|---|---|
-b 파일 | 파일 여부를 검출하는 블록 장치 파일이며, 만약 그렇다면, 그것은 true를 돌려줍니다. | [-b $ 파일]는 false를 돌려줍니다. |
-c 파일 | 파일 여부를 검출하는 문자 장치 파일이며, 만약 그렇다면, 그것은 true를 돌려줍니다. | [-c $ 파일]는 false를 돌려줍니다. |
-d 파일 | 파일 여부를 검출하는 디렉토리이며, 만약 그렇다면, 그것은 true를 돌려줍니다. | [-d $ 파일]는 false를 돌려줍니다. |
-f 파일 | 파일이 일반 파일 (어느 디렉토리 나 디바이스 파일), 그리고 그렇다면, 그것이 사실 반환 여부를 검출. | [-f $ 파일]는 true를 돌려줍니다. |
-g 파일 | 파일 여부를 검출하는 것은 SGID 비트를 가지고 있으며, 만약 그렇다면, 그것은 true를 돌려줍니다. | [-g $ 파일]는 false를 돌려줍니다. |
-k 파일 | 파일이 스티키 비트 (고정 비트)를 가지고 있는지 감지하고, 그렇다면, 그것은 true를 돌려줍니다. | [-k $ 파일]는 false를 돌려줍니다. |
-p 파일 | 파일 여부를 검출하는 명명 된 파이프, 그리고 만약 그렇다면, 그것은 true를 돌려줍니다. | [-p $ 파일]는 false를 돌려줍니다. |
-u 파일 | 파일 여부를 검출하면 SUID 비트를 가지고 있으며, 만약 그렇다면, 그것은 true를 돌려줍니다. | [-u $ 파일]는 false를 돌려줍니다. |
-r 파일 | 이 파일을 읽을 수 있는지 여부를 검출하고, 만약 그렇다면, 그것은 true를 돌려줍니다. | [-r $ 파일]는 true를 돌려줍니다. |
-w 파일 | 파일을 작성, 그렇다면,이 true를 반환 할 수 있는지 여부를 감지. | [-w $ 파일]는 true를 돌려줍니다. |
-x 파일 | 검출 파일을 실행하고, 만약 그렇다면, 그건 사실 반환하는지 여부. | [-x $ 파일]는 true를 돌려줍니다. |
-s 파일 | 파일 (파일 크기가 0보다 큰)가 공백 상태인지의 여부를 검출하지 빈 참을 리턴. | [-s $ 파일]는 true를 돌려줍니다. |
-e 파일 | (디렉토리 포함) 파일 존재를 감지하고, 만약 그렇다면, 그것은 true를 돌려줍니다. | [-e $ 파일]는 true를 돌려줍니다. |
예
변수 파일의 크기가 RWX 권한으로, 100 바이트, 파일 "/var/www/w3big/test.sh"를 나타냅니다. 다음 코드는 파일의 다양한 속성을 감지합니다 :#!/bin/bash # author:本教程 # url:www.w3write.com file="/var/www/w3big/test.sh" if [ -r $file ] then echo "文件可读" else echo "文件不可读" fi if [ -w $file ] then echo "文件可写" else echo "文件不可写" fi if [ -x $file ] then echo "文件可执行" else echo "文件不可执行" fi if [ -f $file ] then echo "文件为普通文件" else echo "文件为特殊文件" fi if [ -d $file ] then echo "文件是个目录" else echo "文件不是个目录" fi if [ -s $file ] then echo "文件不为空" else echo "文件为空" fi if [ -e $file ] then echo "文件存在" else echo "文件不存在" fi
스크립트를 실행하여 다음과 같이 출력은 :
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在