Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

쉘 스크립팅 언어로 수학 표현식 계산하기 – 파트 V

Shell Scripts를 이해하고 편안하게 느낄 것입니다. 필요에 따라 유창하게 작성합니다. 이것은 이 튜토리얼 시리즈의 마지막 게시물로, 약간 복잡한 수학적 연산을 수행할 것입니다. 스크립팅 언어를 사용합니다. 셸 스크립팅의 마지막 4개 기사 연대순으로 나열한 시리즈입니다.

쉘 스크립팅 언어로 수학 표현식 계산하기 – 파트 V
  1. 기본 Linux 셸 스크립팅 언어 팁 이해 – 1부
  2. 쉘 프로그래밍을 배우기 위한 Linux 초보자를 위한 5가지 쉘 스크립트 – 2부
  3. Linux BASH 스크립팅의 세계를 항해하기 – 3부
  4. Linux 셸 프로그래밍의 수학적 측면 – 파트 IV

피보나치 수열로 시작

각 숫자가 앞의 두 숫자의 합인 숫자 패턴입니다. 시리즈는 0입니다. , 1 , 1 , 2 , 3 , 5 , 8 …… 정의에 따르면, Fibonccai의 처음 두 숫자는 시퀀스는 0과 1입니다.

스크립트 1:피보나치.sh
#!/bin/bash
echo "How many numbers do you want of Fibonacci series ?" 
  read total 
  x=0 
  y=1 
  i=2 
  echo "Fibonacci Series up to $total terms :: " 
  echo "$x" 
  echo "$y" 
  while [ $i -lt $total ] 
  do 
      i=`expr $i + 1 ` 
      z=`expr $x + $y ` 
      echo "$z" 
      x=$y 
      y=$z 
  done
샘플 출력
[admin@wsxdn.com ~]# chmod 755 Fibonacci.sh
[admin@wsxdn.com ~]# ./Fibonacci.sh

How many numbers do you want of Fibonacci series ? 
10 
Fibonacci Series up to 10 terms :: 
0 
1 
1 
2 
3 
5 
8 
13 
21 
34

피보나치.sh 다운로드

컴퓨터가 바이너리 형식(예:'0)으로만 이해한다는 사실에 익숙합니다. ' 및 '1 ' 그리고 우리 대부분은 십진수의 변환을 배우는 것을 즐겼습니다. 바이너리로 . 이 복잡한 작업을 위한 간단한 스크립트를 작성하는 것은 어떻습니까?

스크립트 2:Decimal2Binary.sh
#!/bin/bash 

for ((i=32;i>=0;i--)); do 
        r=$(( 2**$i)) 
        Probablity+=( $r  ) 
done 

[[ $# -eq 0 ]] &echo -en "Decimal\t\tBinary\n" 
for input_int in admin@wsxdn.com; do 
s=0 
test ${#input_int} -gt 11 &printf "%-10s\t" "$input_int" 

        for n in ${Probablity[@]}; do 

                if [[ $input_int -lt ${n} ]]; then 
                        [[ $s = 1 ]] && printf "%d" 0 
                else 
                        printf "%d" 1 ; s=1 
                        input_int=$(( $input_int - ${n} )) 
                fi 
        done 
echo -e 
done
샘플 출력
[admin@wsxdn.com ~]# chmod 755 Decimal2Binary.sh
[admin@wsxdn.com ~]# ./Decimal2Binary.sh 1121

Decimal		Binary 
1121      	10001100001

참고 :위의 스크립트는 런타임에 입력을 허용하며 이는 분명히 도움이 됩니다.

Decimal2Binary.sh 다운로드

내장된 'bc ' 명령은 십진수를 변환할 수 있습니다. 바이너리로 한 줄의 스크립트에서. 터미널로 달려가세요.

[admin@wsxdn.com ~]# echo "obase=2; NUM" | bc

'NUM 바꾸기 ', 십진수에서 변환하려는 숫자 바이너리로 . 예를 들어,

[admin@wsxdn.com ~]# echo "obase=2; 121" | bc 

1111001

다음으로 위의 스크립트와 정반대로 작동하는 스크립트를 작성합니다. 이진 값 변환 소수점으로 .

스크립트 3:Binary2Decimal.sh
#!/bin/bash 
echo "Enter a number :" 
read Binary 
if [ $Binary -eq 0 ] 
then 
echo "Enter a valid number " 
else 
while [ $Binary -ne 0 ] 
do 
Bnumber=$Binary 
Decimal=0 
power=1 
while [ $Binary -ne 0 ] 
do 
rem=$(expr $Binary % 10 ) 
Decimal=$((Decimal+(rem*power))) 
power=$((power*2)) 
Binary=$(expr $Binary / 10) 
done 
echo  " $Decimal" 
done 
fi
샘플 출력
[admin@wsxdn.com ~]# chmod 755 Binary2Decimal.sh
[admin@wsxdn.com ~]# ./Binary2Decimal.sh

Enter a number : 
11 
3

참고 :위의 기능은 터미널에서 'bc를 사용하여 수행할 수 있습니다. '로 명령합니다.

[admin@wsxdn.com ~]# echo "ibase=2; BINARY" | bc

'BINARY 바꾸기 ' 이진수, 즉,

[admin@wsxdn.com ~]# echo "ibase=2; 11010101" | bc 

213

Binary2Decimal.sh 다운로드

마찬가지로 8진수에서 변환을 작성할 수 있습니다. , 16진수 소수점으로 그 반대의 경우도 마찬가지입니다. 'bc를 사용하여 터미널에서 위의 결과를 달성 ' 명령입니다.

10진수에서 8진수로
[admin@wsxdn.com ~]# echo "obase=8; Decimal" | bc
10진수에서 16진수로
[admin@wsxdn.com ~]# echo "obase=16; Decimal" | bc
8진수에서 10진수로
[admin@wsxdn.com ~]# echo "ibase=8; Octal" | bc
16진수에서 10진수로
[admin@wsxdn.com ~]# echo "ibase=16; Hexadecimal" | bc
2진수에서 8진수로
[admin@wsxdn.com ~]# echo "ibase=2;obase=8 Binary" | bc

일반 숫자 중 일부 설명과 함께 쉘 스크립팅 언어에서 사용되는 테스트는 다음과 같습니다.

Test : INTEGER1 -eq INTEGER2
Meaning: INTEGER1 is equal to INTEGER2
Test : INTEGER1 -ge INTEGER2
Meaning: INTEGER1 is greater than or equal to INTEGER2
Test: INTEGER1 -gt INTEGER2
Meaning: INTEGER1 is greater than INTEGER2
Test:INTEGER1 -le INTEGER2
Meaning: INTEGER1 is less than or equal to INTEGER2
Test: INTEGER1 -lt INTEGER2
Meaning: INTEGER1 is less than INTEGER2
Test: INTEGER1 -ne INTEGER2
Meaning: INTEGER1 is not equal to INTEGER2

이것이 이 기사와 기사 시리즈의 전부입니다. Shell Script Series의 마지막 기사입니다. 스크립팅 언어에 대한 기사가 다시 여기에 없다는 의미는 아닙니다. 쉘 스크립팅 튜토리얼이 끝났다는 의미일 뿐입니다. 우리가 알 가치가 있는 흥미로운 주제나 귀하의 질문을 찾을 때마다 우리는 기꺼이 시리즈를 계속할 것입니다. 여기.

건강을 유지하고 Tecmint에 연결하세요. . 곧 또 다른 흥미로운 주제를 가지고 올 것입니다. 여러분은 읽고 싶어할 것입니다. 댓글 섹션에서 소중한 생각을 공유하세요. .