쉘 연산자
Shell은 다른 프로그래밍 언어와 마찬가지로 다음을 포함한 다양한 연산자를 지원합니다.
산술 연산자
관계 연산자
부울 연산자
문자열 연산자
파일 테스트 운영자
기본 bash는 간단한 수학 연산을 지원하지 않지만 awk 및 expr과 같은 다른 명령을 통해 수행할 수 있으며 expr이 가장 일반적으로 사용됩니다.
expr은 표현식 계산 도구입니다. 이를 사용하여 표현식 평가 작업을 완료할 수 있습니다.
예를 들어 두 개의 숫자를 추가합니다(작은따옴표 ' 대신 백틱`이 사용됨):
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
Run 인스턴스»
스크립트를 실행하면 출력 결과는 다음과 같습니다.
两数之和为 : 4
두 점 참고 사항:
예를 들어 2+2는 틀리므로 2+2로 써야 하는데, 이는 우리가 익숙한 대부분의 프로그래밍 언어와 다르다.
전체 표현식은 ` `로 묶어야 합니다. 이 문자는 Esc 키 아래에 일반적으로 사용되는 작은따옴표가 아닙니다.
산술 연산자
다음 표에는 변수 a가 10이고 변수 b가 20이라고 가정할 때 일반적으로 사용되는 산술 연산자가 나열되어 있습니다.
운영자 | 설명 | 예 |
---|---|---|
+ | 추가 | `expr $a + $b` 결과는 30입니다. |
- | 빼기 | `expr $a - $b` 결과는 10입니다. |
* | 곱셈 | `expr $a * $b` 결과는 200입니다. |
/ | 디비전 | `expr $b / $a` 결과는 2입니다. |
% | 나머지는 가져가세요 | `expr $b % $a` 결과는 0입니다. |
= | 과제 | a=$b는 변수 b의 값을 a에 할당합니다. |
== | 동일한. 두 숫자를 비교하고 같으면 true를 반환하는 데 사용됩니다. | [ $a == $b ]는 false를 반환합니다. |
!= | 같지 않습니다. 두 숫자를 비교하여 동일하지 않으면 true를 반환하는 데 사용됩니다. | [ $a != $b ]는 true를 반환합니다. |
참고: 조건식은 대괄호 사이에 배치해야 하며 공백이 있어야 합니다. 예: [$a==$b]는 잘못되었으므로 [ $a == $b ]로 작성해야 합니다. .
Instance
산술 연산자 예는 다음과 같습니다.
#!/bin/bash # author:php中文网 # url:www.php.cn 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
관계 연산자는 문자열 값이 숫자가 아닌 한 문자열이 아닌 숫자만 지원합니다.참고:
곱셈을 수행하려면 곱셈 기호(*) 앞에 백슬래시()가 와야 합니다. if...then...fi는 조건문입니다. 이에 대해서는 나중에 설명하겠습니다.
- 관계 연산자
다음 표에는 변수 a가 10이고 변수 b가 20이라고 가정할 때 일반적으로 사용되는 관계 연산자가 나열되어 있습니다.
운영자예 | -eq | |
---|---|---|
[ $a -eq $b ]는 false를 반환합니다. | -네 | |
[ $a -ne $b ]는 true를 반환합니다. | -gt | |
[ $a -gt $b ]는 false를 반환합니다. | -lt | |
[ $a -lt $b ]는 true를 반환합니다. | -ge | |
[ $a -ge $b ]는 false를 반환합니다. | -르 | |
[ $a -le $b ]는 true를 반환합니다. | 인스턴스 |
#!/bin/bash # author:php中文网 # url:www.php.cn 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부울 연산자다음 표에는 일반적으로 사용되는 부울 연산자가 나열되어 있습니다. 변수 a는 10, 변수 b는 20:
운영자
예 | ! | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
[ !거짓 ] true를 반환합니다. | -o | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ $a -lt 20 -o $b -gt 100 ]은 true를 반환합니다. | -a | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ $a -lt 20 -a $b -gt 100 ]는 false를 반환합니다. | Example부울 연산자의 예는 다음과 같습니다. #!/bin/bash # author:php中文网 # url:www.php.cn 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 논리 연산자다음은 Shell의 논리 연산자를 소개합니다. 10이고 변수 b는 20입니다.
운영자 설명 예
Instance변수 파일은 "/var/www/php/test.sh" 파일을 나타내며, 크기는 100바이트이고 rwx 권한이 있습니다. 다음 코드는 파일의 다양한 속성을 감지합니다.#!/bin/bash # author:php中文网 # url:www.php.cn 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 : 字符串不为空 |