웹사이트 검색

쉘 스크립팅 언어로 수학적 표현식 계산 - 5부


여러분은 편안하게 셸 스크립트를 이해하고 필요에 따라 유창하게 작성하게 될 것입니다. 이것은 스크립트 언어를 사용하여 다소 복잡한 수학 연산을 수행하는 튜토리얼 시리즈의 마지막 게시물입니다. 쉘 스크립팅 시리즈의 마지막 4개 기사를 연대순으로 정리했습니다.

  1. 기본 Linux 셸 스크립팅 언어 팁 이해 - 1부
  2. Linux 초보자가 쉘 프로그래밍을 배울 수 있는 5가지 쉘 스크립트 - 2부
  3. Linux BASH 스크립팅의 세계 항해 - 3부
  4. Linux 쉘 프로그래밍의 수학적 측면 – 4부

피보나치 수열부터 시작해 보겠습니다.

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

스크립트 1: Fibonacci.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
샘플 출력
[root@tecmint ~]# chmod 755 Fibonacci.sh
[root@tecmint ~]# ./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

Fibonacci.sh 다운로드

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

스크립트 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 $@; 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
샘플 출력
[root@tecmint ~]# chmod 755 Decimal2Binary.sh
[root@tecmint ~]# ./Decimal2Binary.sh 1121

Decimal		Binary 
1121      	10001100001

참고: 위 스크립트는 런타임 시 입력을 허용하며 이는 확실히 도움이 됩니다.

Decimal2Binary.sh 다운로드

내장된 'bc' 명령은 한 줄의 스크립트에서 십진수이진수로 변환할 수 있습니다. 터미널에서 실행하세요.

[root@tecmint ~]# echo "obase=2; NUM" | bc

'NUM'을 10진수에서 2진수로 변환하려는 숫자로 바꾸세요. 예를 들어,

[root@tecmint ~]# 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
샘플 출력
[root@tecmint ~]# chmod 755 Binary2Decimal.sh
[root@tecmint ~]# ./Binary2Decimal.sh

Enter a number : 
11 
3

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

[root@tecmint ~]# echo "ibase=2; BINARY" | bc

'BINARY'를 이진수로 바꾸세요.

[root@tecmint ~]# echo "ibase=2; 11010101" | bc 

213

Binary2Decimal.sh 다운로드

마찬가지로 8진수, 16진수에서 10진수로 또는 그 반대로 변환을 직접 작성할 수 있습니다. 'bc' 명령을 사용하여 터미널에서 위의 결과를 얻는 것은 다음과 같습니다.

10진수를 8진수로
[root@tecmint ~]# echo "obase=8; Decimal" | bc
10진수를 16진수로
[root@tecmint ~]# echo "obase=16; Decimal" | bc
8진수에서 10진수로
[root@tecmint ~]# echo "ibase=8; Octal" | bc
16진수를 10진수로
[root@tecmint ~]# echo "ibase=16; Hexadecimal" | bc
2진수에서 8진수로
[root@tecmint ~]# 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

이것이 이 기사와 기사 시리즈의 전부입니다. 이것은 쉘 스크립트 시리즈의 마지막 기사이며 스크립팅 언어에 대한 기사가 다시 여기에 없다는 의미는 아닙니다. 단지 쉘 스크립팅 튜토리얼이 끝났으며 알 가치가 있는 흥미로운 주제를 발견할 때마다 의미가 있을 뿐입니다. 또는 여러분의 질문이 있으면 여기에서 시리즈를 계속하겠습니다.

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