Linux 셸 스 크 립 트 수치 계산 개인 소감
이 블 로 그 는 개인 이 bash 수치 와 계산 하 는 것 에 대한 소감 과 용법 이다.
Bash 는 수치 에 대해 명확 하 게 정의 되 지 않 았 습 니 다. 셸 에 있 는 모든 수 치 는 기본적으로 문자열 입 니 다. 단순 한 수치 가 아 닙 니 다.
예 를 들 어 a = 1 + 2, a 는 3 이 아니 라 문자열 1 + 2 와 같다.
정수 계산:
정 수 는 정수 형의 수치 가감 승제 로 계산 되 며, 부동 소수점 의 수치 가 없 으 며, 부동 소수점 의 수 치 를 가감 하 더 라 도 소수점 뒤의 수 치 를 무시 합 니 다.
표현 식 계산 방법:
표현 식 1: $[EXPRESSION]
표현 식 2: $(EXPRESSION)
[] 와 () 도 연산 자로 불 린 다.
표현 식 의 연산 자 양쪽 에 빈 칸 이 있 을 수 있 습 니 다.예: [a + b]
例子
输入:
a=1
b=1
c=2
d=$[$a+$b]
e=$(($b+$c))
f=$[$d + $b]
g=$(($e + $c))
echo "$d"
echo "$e"
echo "$f"
echo "$g"
输出:
+ echo d=2
d=2
+ echo e=3
e=3
+ echo f=3
f=3
+ echo g=5
g=5
표현 식 계산 방식 은 연산 자 양쪽 에 빈 칸 을 가 질 수 있 습 니 다.
메모: 표현 식 1 은 bash 의 테스트 조건 과 비슷 하지만 bash 의 테스트 조건 은 표현 식 양쪽 이 아 닌 괄호 양쪽 에 빈 칸 이 있 습 니 다.
테스트 조건: 괄호 양쪽 에 빈 칸 이 필요 합 니 다.
[ $a>$b ]
표현 식 1: 연산 자 양쪽 에 빈 칸 이 있 을 수 있 습 니 다.
[a + b]
명령 의 계산 방식:
명령 1: let
명령 2: expr
명령 3: bc
let 명령 계산:
형식: let var=$a+$b
let 의 계산 은 정수 만 계산 할 수 있 고 부동 소수점 을 계산 할 수 없 으 며 부동 소수점 으로 계산 하면 소수 뒤의 숫자 도 무시 합 니 다.
例如
输入:
a=1
b=1
c=2
输出:
let d=$a+$b
echo "d=$d"
let g=$c-$b
echo "g=$g"
let e=$c*$c+$a
echo "e=$e"
메모: let 는 완전한 산술 표현 식 이 어야 합 니 다. 즉, 등호 양쪽 에 빈 칸 이 있어 서 는 안 됩 니 다. 위의 표현 식 과 달리 기억 하 십시오.
expr 계산:
형식 1: var=` expr $a+$b`
형식 2: var=$(expr $a+$b)
$() 는 '와 같다.
$() 테스트 조건 중의 () 와 약간 비슷 하지만 테스트 조건 중의 () 는 $기호 가 앞 에 없 으 므 로 주의해 야 한다.
expr 의 가감 곱 하기: 곱 하기 번 호 는 역 슬 래 쉬 로 뜻 을 바 꿔 야 한다.
+
-
\*
/
expr 와 let 의 차 이 는 expr 가 등호 오른쪽 에 있 는 연산 식 만 계산 한 다음 에 얻 은 수 치 를 변수 에 복사 하고 let 는 전체 표현 식 을 포함 하여 계산 하 는 것 입 니 다.하지만 연산 능력 등 은 마찬가지다.
메모: expr 와 let 는 특히 주의해 야 할 것 이 있 습 니 다. let 의 연산 자 는 양쪽 에 빈 칸 이 있어 서 는 안 되 며, expr 의 연산 자 는 양쪽 에 빈 칸 이 있어 야 합 니 다.
例如
输入
a=1
b=1
c=2
d=`expr $a+$b`
echo "d=$d"
e=$(expr $a+$c)
echo "e=$e"
g=`expr $a*$c+$b`
echo "g=$g"
输出
++ expr 1 + 1
+ d=2
+ echo d=2
d=2
++ expr 1 + 2
+ e=3
+ echo e=3
e=3
++ expr 1 '*' 2 + 1
+ g=3
+ echo g=3
g=3
expr 와 let 는 차이 가 많 지 않 습 니 다. 일반적으로 let 를 사용 하 는 것 이 많 습 니 다. expr 의 연산 능력 은 let 와 같 지만 expr 는 외부 구성 요소 와 let 내 장 된 것 은 연산 수의 차이 가 있 습 니 다.
부동 소수점 계산:
bc 계산:
bc 는 강력 한 계산 도구 이자 외부 구성 요소 이지 만 bc 는 부동 소수점 계산 을 할 수 있 고 진 변환 을 할 수 있 습 니 다.
형식:
echo "scale=2;$a+$b"| bc
부동 소수점 연산 은 매우 중요 한 개념 이 바로 정밀도 이다.bc. 이곳 의 정 도 는 소수 의 자릿수 를 가리킨다.bc 를 사용 하여 나눗셈 연산 을 할 때, 기본 값 은 소수 부분 이 없 는 것 을 발견 할 수 있 습 니 다.그래서 bc 는 scale 라 는 매개 변 수 를 가지 고 있 습 니 다. 이 매개 변 수 는 소수점 뒤의 몇 자리 의 자릿수 를 확인 하 는 데 사 용 됩 니 다. 몇 자리 의 소수 가 필요 하면 몇 자리 로 설정 합 니까?
주의: 나눗셈 연산 할 때 만 수정 할 수 있 습 니 다.
例子1: 在命令行进行整数加法
输入
[root@localhost ~]# echo "1+2" | bc
输出
3
例子2: 在命令行进行浮点数加法
输入
[root@localhost ~]# echo "scale=3;1.1254+2.452" | bc
输出
3.5774
例子3: 用脚本进行计算
输入
a=1.455
b=1.97
c=2.354
浮点数加法
d=`echo "$a+$b" | bc`
echo "d=$d"
浮点数乘法
e=$(echo "$a*$b" | bc)
echo "e=$e"
浮点数除法,带scale参数
f=`echo "scale=3;$a/$b" | bc`
echo "f=$f"
浮点数除法,不带scale参数
g=$(echo "$a/$b" | bc)
echo "g=$g"
输出
浮点数加法输出结果
++ bc
++ echo 1.455+1.97
+ d=3.425
+ echo d=3.425
d=3.425
浮点数乘法输出结果
++ bc
++ echo '1.455*1.97'
+ e=2.866
+ echo e=2.866
e=2.866
浮点数除法,带scale参数输出结果
++ bc
++ echo 'scale=3;1.455/1.97'
+ f=.738
+ echo f=.738
f=.738
浮点数除法,不带scale参数输出结果
++ bc
++ echo 1.455/1.97
+ g=0
+ echo g=0
g=0
이상 의 출력 결 과 를 통 해 bc 가 가감 승제 계산 을 할 때 나눗셈 만 scale 매개 변수 가 없 을 때 작은 숫자 를 취하 지 않 는 다 는 것 을 검증 할 수 있 습 니 다.
자동 가감 계산:
자가 감 소 는 비교적 간단 한 계산 이다.
이상 의 모든 계산 방식 은 자가 감 소 를 할 수 있 기 때문에 이쪽 에서 직접 사례 를 제시한다.
表达式1:
输入
a=1
自加1
a=$[$a+1]
echo "a++: $a"
输出
+ a=2
+ echo 'a++: 2'
a++: 2
表达式2:
输入
c=2
自加1,与表达式1有稍许不同。表达式2可以用++来代表+1
((c++))
echo "c++: $c"
输出
+ (( c+++ ))
+ echo 'c++: 3'
c++: 3
输入
c=2
自加2,自加大于1的时候就与表达式1差不多了
((c+=2))
echo "c++: $c"
输出
+ (( c+++ ))
+ echo 'c++: 4'
c++: 4
let计算:
输入
a=1
自加1
let a++
echo "a++: $a"
输出
+ let a++
+ echo 'a++: 2'
a++: 2
输入
a=1
自加2
let a+=2
echo "a+=: $a"
输出
+ let a++
+ echo 'a++: 2'
a++: 2
expr计算:
输入
a=1
自加1
a=`expr $a + 1`
echo "a++: $a"
输出
++ expr 1 + 1
+ a=2
+ echo 'a++: 2'
a++: 2
输入
b=1
自加2
b=$(expr $b + 2)
echo "b+=: $b"
输出
++ expr 1 + 2
+ b=3
+ echo 'b+=: 3'
b+=: 3
bc计算:
输入
a=1
自加1
a=`echo "$a+1" | bc`
echo "a++: $a"
输出
++ bc
++ echo 1+1
+ a=2
+ echo 'a++: 2'
a++: 2
输入
b=1
自加2
b=$(echo "$b+2" | bc)
echo "b+=: $b"
输出
++ bc
++ echo 1+2
+ b=3
+ echo 'b+=: 3'
b+=: 3
이로써 셸 스 크 립 트 의 계산 은 크게 다 르 지 않 을 것 입 니 다. 이상 은 개인 적 인 이해 와 인터넷 게시 물 을 위해 배 웠 습 니 다. 잘못된 점 이 있 으 면 지적 해 주 십시오. 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.