제2 장: Shell 연산 과 비교
변량
설명 하 다.
${\# 변수}
변수 값 의 길이 가 져 오기
${변수\# 일치 규칙}
처음부터 일치, 최 단 삭제
${변수\#\# 일치 규칙}
처음부터 일치, 최 장 삭제
${변수% 일치 규칙}
끝 부터 일치, 최 단 삭제
${변수% 일치 규칙}
끝 부터 일치, 최 장 삭제
${변수/오래된 문자열/새 문자열}
변수 에 있 는 오래된 문자열 을 새 문자열 로 바 꾸 고 첫 번 째 문자열 만 바 꿉 니 다.
${변수//오래된 문자열/새 문자열}
변수 에 있 는 오래된 문자열 을 새 문자열 로 바 꿉 니 다. 모두 바 꿉 니 다.
${변수: 일치 규칙: 일치 규칙}
색인 및 절편
2 절: 정수 연산
1. expr (수치 사이 에 빈 칸 이 있어 야 함)\# 구방 연산 을 할 수 없습니다
[root@web /scripts/day02]# expr $a ^ $b
expr: syntax error
2. $()\# 구 하 는 쪽 을 지원 하지 않 습 니 다.
[root@web /scripts/day02]# echo $(( $a ^ $b ))
30
3.$[]
[root@web /scripts/day02]# echo $[$a+$b]
30
4. let 계산 횟수, 더하기, 자감
[root@web /scripts/day02]# let a++
[root@web /scripts/day02]# echo $a
11
[root@web /scripts/day02]# let a--
[root@web /scripts/day02]# echo $a
10
[root@web /scripts/day02]# let c=$a+$b
[root@web /scripts/day02]# echo $c
30
제3 절: 소수 연산
1. bc\# 계산기 와 비슷 합 니 다.
[root@web /scripts/day02]# yum install -y bc
[root@web /scripts/day02]# bc #进入交互式
[root@web /scripts/day02]# echo $a + $b | bc
30
2. awk 계산
[root@web /scripts/day02]# awk 'BEGIN{print $a + $b }' #不支持外部变量
0
[root@web /scripts/day02]# awk 'BEGIN{print 10 + 20 }'
30
[root@web /scripts/day02]# awk 'BEGIN{print 10 / 20 }'
0.5
[root@web /scripts/day02]# awk 'BEGIN{print 10 ^ 20 }'
100000000000000000000
[root@web /scripts/day02]# awk 'BEGIN{print 10 / 3 }'
3.33333
[root@web /scripts/day02]# awk 'BEGIN{printf "%.2f
",10 / 3 }' #保留小数点后2位
3.33
[root@web /scripts/day02]# awk 'BEGIN{printf "%.1f
",10 / 3 }' #保留小数点后1位
3.3
#awk内部变量
[root@web /scripts/day02]# awk -va=1 -vb=2 'BEGIN{print a + b }'
3
3.python
[root@web /scripts/day02]# python
echo "print $a + $b " |python
30
[root@web /scripts/day02]# echo "print $a ^ $b " |python
30
[root@web /scripts/day02]# echo "print $a / $b " |python
0
[root@web /scripts/day02]# echo "print $a.0 / $b " |python
0.5
[root@web /scripts/day02]# echo "print $a.0 / 10 " |python
1.0
[root@web /scripts/day02]# echo "print $a.0 / 3 " |python
3.33333333333
[root@web /scripts/day02]# echo "print 10 / 3 " |python
3
[root@web /scripts/day02]# echo "print 10.0 / 3 " |python
3.33333333333
제4 절: 수치 비교
옵션
설명 하 다.
예시
-eq
조건 이 진실 과 같다
[ 1 -eq 10 ]
-ne
같 지 않 으 면 조건 이 진실 이다.
[ 1 -ne 10 ]
-gt
규칙 보다 크 면 조건 이 진실 이다.
[ 1 -gt 10 ]
-lt
작 으 면 조건 이 진실 이다.
[ 1 -lt 10 ]
-ge
같 음 보다 크 면 조건 이 진실 이다.
[ 1 -ge 10 ]
-le
보다 작 으 면 조건 이 진실 이다.
[ 1 -le 10 ]
제5 절: 문자열 비교
1. 문자열 은 따옴표 를 사용 해 야 합 니 다.
[ "name" = "name" ]
[ "name" != "name" ]
[root@web ~]# [ "$USER" = "root" ]
[root@web ~]# echo $USER
root
[root@web ~]# [ "$USER" = "root" ]
[root@web ~]# echo $?
0
[root@web ~]# [ "$USER" = "alex" ]
[root@web ~]# echo $?
1
[root@web ~]# [ "$USER" != "alex" ]
[root@web ~]# echo $?
0
2. - z 변수 값 이 비어 있 는 지 판단 하고 비어 있 으 면 반환 값 0
[root@web ~]# name=""
[root@web ~]# [ -z $name ]
[root@web ~]# echo $?
0
[root@web ~]# [ ! -z $name ]
[root@web ~]# echo $?
1
[root@web ~]# name="alex"
[root@web ~]# [ -z $name ]
[root@web ~]# echo $?
1
[root@web ~]# [ -n $name ]
[root@web ~]# echo $?
0
-z 案例:
read -p "请输入名字" name1
[ -z $name1 ] && echo "请输入姓名否则不继续执行" && exit
read -p "请输入年龄" age1
echo $name1 $age1
제6 절: 정규 비교
1. 이중 괄호 안 을 사용 해 야 정규 비 교 를 할 수 있다 [[]]
[root@web01 scripts]# [ "$USER" = "root" ]
[root@web01 scripts]# echo $?
0
[root@web01 scripts]# [[ "$USER" =~ ^r ]]
[root@web01 scripts]# echo $?
0
[root@web01 scripts]# [[ "$USER" =~ t$ ]]
[root@web01 scripts]# echo $?
0
[root@web01 scripts]# [[ ! "$USER" =~ t$ ]]
[root@web01 scripts]# echo $?
1
案例:判读传参的参数是否为整数
方法1
[root@web01 scripts]# age=188
[root@web01 scripts]#
[root@web01 scripts]#
[root@web01 scripts]# [[ "$age" =~ ^[0-9]+$ ]]
[root@web01 scripts]# echo $?
0
[root@web01 scripts]# age=188q
[root@web01 scripts]# [[ "$age" =~ ^[0-9]+$ ]] && echo $?
[root@web01 scripts]# [[ "$age" =~ ^[0-9]+$ ]] || echo $?
1
[root@web01 scripts]# age=18.8
[root@web01 scripts]# [[ "$age" =~ ^[0-9]+$ ]]
[root@web01 scripts]# echo $?
1
方法2
expr $1 + 0 >/dev/null 2>&1
[ $? -ne 0 ] && exit
제7 절: 다 정수 비교
1. - a/and 를 사용 하고 양쪽 의 조건 이 동시에 성립 되 며 반환 값 은 0 이다.
[ 10 -eq 10 -a 100 -ne 100 ]
[root@web01 scripts]# [ 10 -eq 10 -a 100 -ne 100 ]
[root@web01 scripts]# echo $?
1
[root@web01 scripts]# [ 10 -eq 10 -a 100 -eq 100 ]
[root@web01 scripts]# echo $?
0
2. - o/or 또는 의 미 를 사용 하여 양쪽 의 조건 이 하나 로 성립 되 고 반환 값 은 0 이다.
[root@web01 scripts]# [ 10 -eq 10 -o 100 -ne 100 ]
[root@web01 scripts]# echo $?
0
[root@web01 scripts]# [[ 10 -eq 10 && 100 -ne 100 ]]
[root@web01 scripts]# [[ 10 -eq 10 -a 100 -ne 100 ]]
-bash: 条件表达式中有语法错误
-bash: `-a' 附近有语法错误
[root@web01 scripts]# [[ 10 -eq 10 && 100 -ne 100 ]]
[root@web01 scripts]# echo $?
1
[root@web01 scripts]# [[ 10 -eq 10 || 100 -ne 100 ]]
[root@web01 scripts]# echo $?
0
제8 절: 파일 이나 디 렉 터 리 판단
비교 부호
속뜻
예시
-e
파일 이나 디 렉 터 리 가 존재 하면 진짜 입 니 다.
[ -e file ]
-s
파일 이 존재 하고 최소한 한 글자 가 있 으 면 진짜 입 니 다.
[ -s file ]
-d
파일 이 존재 하고 디 렉 터 리 가 진짜 라면
[ -d file ]
-f
파일 이 존재 하고 일반 파일 이 라면 진짜 입 니 다.
[ -f file ]
-r
파일 이 존재 하고 읽 을 수 있다 면 진짜 입 니 다.
[ -r file ]
-w
파일 이 존재 하고 쓸 수 있다 면 진짜 입 니 다.
[ -w file ]
-x
파일 이 존재 하고 실행 가능 하 다 면 진짜 입 니 다.
[ -x file ]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.