Linux 셸 스 크 립 트 수치 계산 개인 소감

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

이로써 셸 스 크 립 트 의 계산 은 크게 다 르 지 않 을 것 입 니 다. 이상 은 개인 적 인 이해 와 인터넷 게시 물 을 위해 배 웠 습 니 다. 잘못된 점 이 있 으 면 지적 해 주 십시오. 감사합니다.

좋은 웹페이지 즐겨찾기