쉘 스크립팅 언어로 수학적 표현식 계산 - 5부
여러분은 편안하게 셸 스크립트를 이해하고 필요에 따라 유창하게 작성하게 될 것입니다. 이것은 스크립트 언어를 사용하여 다소 복잡한 수학 연산을 수행하는 튜토리얼 시리즈의 마지막 게시물입니다. 쉘 스크립팅 시리즈의 마지막 4개 기사를 연대순으로 정리했습니다.
- 기본 Linux 셸 스크립팅 언어 팁 이해 - 1부
- Linux 초보자가 쉘 프로그래밍을 배울 수 있는 5가지 쉘 스크립트 - 2부
- Linux BASH 스크립팅의 세계 항해 - 3부
- 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에 접속하세요. 곧 나는 여러분이 읽고 싶어할 또 다른 흥미로운 주제를 가지고 올 것입니다. 댓글 섹션에서 소중한 생각을 공유하세요.