Latest web development tutorials

쉘 기본 연산자

셸 및 다른 프로그래밍 언어는 운영자 포함한 다양한 지원

  • 산술 연산자
  • 관계 연산자
  • 부울 연산자
  • 문자열 연산자
  • 테스트 연산자 파일

네이티브 배시 단순한 수학적 연산을 지원하지 않지만, 가장 일반적으로 사용 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.w3big.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

참고 :

  • 곱셈 기호 (*)를 승산을 달성하기 위하여 백 슬래시 (\)의 앞에 추가해야;
  • ... 다음 ... 파이는 조건문 경우, 후속이 적용됩니다.
  • 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.w3big.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.w3big.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.w3big.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.w3big.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.w3big.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

스크립트를 실행하여 다음과 같이 출력은 :

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在