[Linux] 셸 스 크 립 트 실전 - 각종 연산 자 소개
지난 몇 편의 글 에서 우 리 는 주로 셸 의 스 크 립 트 기초 와 기본 적 인 연산 자 를 토론 했다. 여기 서 우 리 는 이전의 내용 을 조금 복습 했다.
복습
1. 산술 연산 자
다음 표 는 자주 사용 하 는 산술 연산 자 를 보 여 줍 니 다. 변수 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] 트 루 로 돌아 갑 니 다.
* * 주의: * * 조건 식 은 괄호 사이 에 두 고 빈 칸 이 있어 야 합 니 다. 예 를 들 어 [a = a = = a = = b] 는 잘못된 것 입 니 다. [$a = = $b] 로 써 야 합 니 다.
2. 흔히 볼 수 있 는 산술 연산 명령
연산 연산 자 와 연산 명령
의의
(())
정수 연산 에 사용 되 는 상용 연산 자 는 효율 이 매우 높다.
let
정수 연산 에 사용, 유사 (()
expr
정수 연산 에 사용 할 수 있 으 나, 기타 많은 기능 이 있다.
bc
linux 다음 계산기 프로그램 (정수 및 소수 연산 에 적합)
$[]
정수 계산 에 사용 하 다
awk
awk 는 정수 연산 에 도 사용 할 수 있 고 소수 연산 에 도 사용 할 수 있다.
declare
변수 값 과 속성 을 정의 합 니 다. - i 매개 변 수 는 성형 변 수 를 정의 하고 연산 할 수 있 습 니 다.
관계 연산 자
일상적인 업무 에서 우 리 는 수학 연산 을 해 야 하 는 것 을 제외 하고 때때로 관계 연산 도 해 야 한다. 이른바 관계 연산 이란 크 고 같 으 며 작 다 는 것 이다.
관계 연산 자 는 문자열 의 값 이 숫자 가 아 닌 숫자 만 지원 합 니 다. * *
다음 표 는 자주 사용 하 는 관계 연산 자 를 보 여 줍 니 다. 변수 a 는 10 이 고 변 수 는 b 는 20 입 니 다.
연산 자
설명 하 다.
예 를 들다
-eq
두 개의 수가 같은 지 확인 하고, 같은 값 으로 true 로 돌아 갑 니 다.
[$a - eq $b] false 를 되 돌려 줍 니 다.
-ne
두 개의 수가 같 지 않 은 지 확인 하고, 같 지 않 은 지 true 로 돌아 갑 니 다.
[$a - ne $b] 트 루 로 돌아 갑 니 다.
-gt
왼쪽 의 수가 오른쪽 보다 큰 지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
[$a - gt $b] false 로 돌아 갑 니 다.
-lt
왼쪽 의 수가 오른쪽 보다 작은 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
[$a - lt $b] 트 루 로 돌아 갑 니 다.
-ge
왼쪽 의 수가 오른쪽 보다 큰 지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
[$a - ge $b] false 로 돌아 갑 니 다.
-le
왼쪽 의 수가 오른쪽 보다 작은 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
[$a - le $b] 트 루 로 돌아 갑 니 다.
관계 연산 자 인 스 턴 스 연습:
#!/bin/bash
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
실행 결과:
[root@ecs-c13b ~]# bash ysf.sh
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
[root@ecs-c13b ~]#
삼. 불 연산 자
다음 표 는 자주 사용 하 는 불 연산 자 를 보 여 줍 니 다. 변수 a 는 10 이 고 변 수 는 b 는 20 입 니 다.
연산 자
설명 하 다.
예 를 들다
!
비 연산, 표현 식 이 true 이면 false 를 되 돌려 줍 니 다. 그렇지 않 으 면 true 를 되 돌려 줍 니 다.
[! false] 트 루 로 돌아 가.
-o
또는 연산, 트 루 표현 식 이 있 으 면 트 루 로 돌아 갑 니 다.
[$a - lt 20 - o $b - gt 100] 트 루 로 돌아 갑 니 다.
-a
연산 과 함께 두 표현 식 이 모두 true 여야 true 로 돌아 갑 니 다.
[$a - lt 20 - a $b - gt 100] false 로 돌아 갑 니 다.
불 연산 자 인 스 턴 스 는 다음 과 같 습 니 다:
#!/bin/bash
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 100 $b 15 : true"
else
echo "$a 100 $b 15 : false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a 100 $b 100 : true"
else
echo "$a 100 $b 100 : false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
echo "$a 5 $b 100 : true"
else
echo "$a 5 $b 100 : false"
fi
[root@ecs-c13b ~]# bash ysf.sh
10 != 20 : a b
10 100 20 15 : true
10 100 20 100 : true
10 5 20 100 : false
[root@ecs-c13b ~]#
논리 연산 자
다음은 Shell 의 논리 연산 자 를 소개 합 니 다. 변수 a 는 10 이 고 변수 b 는 20: 논리 연산 자 인 스 턴 스 는 다음 과 같 습 니 다.
[root@ecs-c13b ~]# cat ysf.sh
#!/bin/bash
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
결과 되 돌리 기:
[root@ecs-c13b ~]# bash ysf.sh
false
true
문자열 연산 자
다음 표 는 자주 사용 하 는 문자열 연산 자 를 보 여 줍 니 다. 변수 a 는 "abc"이 고 변 수 는 b 는 "efg"입 니 다.
연산 자
설명 하 다.
예 를 들다
=
두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
[$a = $b] false 를 되 돌려 줍 니 다.
!=
두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
[$a! = $b] 트 루 로 돌아 갑 니 다.
-z
문자열 길이 가 0 인지, 0 인지 true 로 되 돌아 갑 니 다.
[- z $a] false 로 돌아 갑 니 다.
-n
문자열 길이 가 0 인지, 0 이 아 닌 true 를 되 돌려 줍 니 다.
[n "$a"] true 로 돌아 갑 니 다.
$
문자열 이 비어 있 는 지, 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
[$a] 트 루 로 돌아 갑 니 다.
문자열 연산 자 인 스 턴 스 는 다음 과 같 습 니 다:
#!/bin/bash
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
결과 되 돌리 기:
**[root@ecs-c13b ~]# bash ysf01.sh
abc = efg: a b
abc != efg : a b
-z abc : 0
-n abc : 0
abc : **
파일 테스트 연산 자
파일 테스트 연산 자 는 유 닉 스 파일 의 각종 속성 을 검사 하 는 데 사 용 됩 니 다.속성 검사 설명 은 다음 과 같 습 니 다.
조작 부호
설명 하 다.
예 를 들다
-b file
파일 이 블록 장치 파일 인지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
[- b $file] false 를 되 돌려 줍 니 다.
-c file
파일 이 문자 장치 파일 인지 확인 하고 트 루 로 돌아 갑 니 다.
[- c $file] false 를 되 돌려 줍 니 다.
-d file
파일 이 디 렉 터 리 인지 확인 하고 트 루 로 돌아 갑 니 다.
[- d $file] false 를 되 돌려 줍 니 다.
-f file
파일 이 일반 파일 인지 확인 합 니 다 (디 렉 터 리 도 장치 파일 도 아 닙 니 다). 그렇다면 true 로 돌아 갑 니 다.
[- f $file] true 로 돌아 갑 니 다.
-g file
파일 에 SGID 비트 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 돌아 갑 니 다.
[- g $file] false 를 되 돌려 줍 니 다.
-k file
파일 에 붙 어 있 는 비트 (Sticky Bit) 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 되 돌려 줍 니 다.
[- k $file] false 를 되 돌려 줍 니 다.
-p file
파일 이 유명 파이프 인지 확인 하고 트 루 로 돌아 갑 니 다.
[- p $file] false 를 되 돌려 줍 니 다.
-u file
파일 에 SUID 비트 가 설정 되 어 있 는 지 확인 하고, 그렇다면 true 로 돌아 갑 니 다.
[- u $file] false 를 되 돌려 줍 니 다.
-r file
파일 을 읽 을 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
[- r $file] true 를 되 돌려 줍 니 다.
-w file
파일 을 쓸 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
[- w $file] true 로 돌아 갑 니 다.
-x file
파일 이 실 행 될 수 있 는 지 확인 하고 트 루 로 돌아 갑 니 다.
[- x $file] true 로 돌아 갑 니 다.
-s file
파일 이 비어 있 는 지 확인 합 니 다 (파일 크기 가 0 이상 인지). 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
[- s $file] true 로 돌아 갑 니 다.
-e file
파일 (디 렉 터 리 포함) 이 존재 하 는 지 확인 하고 트 루 로 돌아 갑 니 다.
[- e $file] true 를 되 돌려 줍 니 다.
기타 검사 문자:
총결산
본 고 는 주로 각종 연산 자 를 소 개 했 는데 이런 연산 자 는 후기 에 셸 스 크 립 트 를 능숙 하 게 파악 하 는 데 기 초 를 다 졌 다.조건문 구 는 대부분 이런 연산 자 를 바탕 으로 판단 하기 때문이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.