Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Tính toán các biểu thức toán học trong ngôn ngữ kịch bản Shell - Phần V

Mọi người của bạn sẽ cảm thấy thoải mái khi hiểu Shell Scripts và viết chúng một cách trôi chảy, theo nhu cầu của bạn. Đây là bài đăng cuối cùng của loạt bài hướng dẫn này, nơi chúng tôi sẽ thực hiện một số Phép toán toán học hơi phức tạp sử dụng ngôn ngữ kịch bản. Bốn bài viết cuối cùng của Shell Scripting sê-ri theo thứ tự thời gian.

Tính toán các biểu thức toán học trong ngôn ngữ kịch bản Shell - Phần V
  1. Hiểu Mẹo Ngôn ngữ Kịch bản Shell Cơ bản của Linux - Phần I
  2. 5 Tập lệnh Shell cho Người mới sử dụng Linux để Học Lập trình Shell - Phần II
  3. Đi khắp thế giới của Linux BASH Scripting - Phần III
  4. Khía cạnh Toán học của Lập trình Shell Linux - Phần IV

Hãy bắt đầu với Chuỗi Fibonacci

Một mẫu số trong đó mỗi số là tổng của hai số đứng trước. Sê-ri là 0 , 1 , 1 , 2 , 3 , 5 , 8 …… Theo định nghĩa, hai số đầu tiên trong Fibonccai trình tự là 0 và 1.

Tập lệnh 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
Đầu ra mẫu
[[email protected] ~]# chmod 755 Fibonacci.sh
[[email protected] ~]# ./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

Tải xuống Fibonacci.sh

Bạn đã quen với thực tế là máy tính chỉ hiểu ở Định dạng nhị phân, tức là ‘ 0 ‘Và‘ 1 ‘Và hầu hết chúng ta đều thích học cách chuyển đổi Decimal sang Binary . Làm thế nào về việc viết một tập lệnh đơn giản cho hoạt động phức tạp này.

Tập lệnh 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 [email protected]; 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
Đầu ra mẫu
[[email protected] ~]# chmod 755 Decimal2Binary.sh
[[email protected] ~]# ./Decimal2Binary.sh 1121

Decimal		Binary 
1121      	10001100001

Lưu ý :Tập lệnh trên chấp nhận Đầu vào tại thời điểm chạy, điều này rõ ràng là một sự hỗ trợ.

Tải xuống Decimal2Binary.sh

Vâng, ‘ bc có sẵn Lệnh ‘có thể chuyển đổi số thập phân sang nhị phân trong một tập lệnh của một dòng. Chạy, tại nhà ga của bạn.

[[email protected] ~]# echo "obase=2; NUM" | bc

Thay thế ‘ NUM ‘Với số mà bạn muốn chuyển đổi từ Số thập phân sang Binary . Ví dụ:

[[email protected] ~]# echo "obase=2; 121" | bc 

1111001

Tiếp theo, chúng ta sẽ viết một tập lệnh có chức năng đối lập với tập lệnh trên, Chuyển đổi giá trị nhị phân thành Số thập phân .

Tập lệnh 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
Đầu ra mẫu
[[email protected] ~]# chmod 755 Binary2Decimal.sh
[[email protected] ~]# ./Binary2Decimal.sh

Enter a number : 
11 
3

Lưu ý :Chức năng trên có thể được thực hiện trong thiết bị đầu cuối bằng cách sử dụng ‘ bc ‘Lệnh như.

[[email protected] ~]# echo "ibase=2; BINARY" | bc

Thay thế ‘ BINARY ‘Với số nhị phân, viz.,

[[email protected] ~]# echo "ibase=2; 11010101" | bc 

213

Tải xuống Binary2Decimal.sh

Tương tự, bạn có thể viết chuyển đổi từ bát phân , thập lục phân thành số thập phân và ngược lại chính bạn. Hoàn thành kết quả ở trên trong thiết bị đầu cuối bằng cách sử dụng ‘ bc Lệnh ‘is.

Thập phân đến bát phân
[[email protected] ~]# echo "obase=8; Decimal" | bc
Thập phân sang Thập lục phân
[[email protected] ~]# echo "obase=16; Decimal" | bc
Từ bát phân sang thập phân
[[email protected] ~]# echo "ibase=8; Octal" | bc
Thập lục phân sang thập phân
[[email protected] ~]# echo "ibase=16; Hexadecimal" | bc
Nhị phân đến Bát phân
[[email protected] ~]# echo "ibase=2;obase=8 Binary" | bc

Một số Chữ số phổ biến kiểm tra được sử dụng trong ngôn ngữ kịch bản shell với mô tả là.

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

Đó là tất cả cho bài viết này và loạt bài viết. Đây là bài viết cuối cùng của Shell Script Series và điều đó không có nghĩa là sẽ không có bài viết nào về ngôn ngữ Scripting ở đây nữa, nó chỉ có nghĩa là phần hướng dẫn về shell scripting đã kết thúc và bất cứ khi nào chúng tôi tìm thấy một chủ đề thú vị đáng để biết hoặc một truy vấn từ bạn, chúng tôi sẽ rất vui khi tiếp tục loạt bài từ tại đây.

Giữ sức khỏe, theo dõi và kết nối với Tecmint . Rất nhanh, tôi sẽ đến với một chủ đề thú vị khác, các bạn sẽ thích đọc. Chia sẻ những suy nghĩ có giá trị của bạn trong Phần bình luận .