คุณ คนคงจะสบายใจ เข้าใจ Shell Scripts และเขียนได้อย่างคล่องแคล่วตามความต้องการของคุณ นี่เป็นโพสต์สุดท้ายของชุดบทช่วยสอนนี้ ซึ่งเราจะดำเนินการ การดำเนินการทางคณิตศาสตร์ ที่ซับซ้อนเล็กน้อย โดยใช้ภาษาสคริปต์ สี่บทความสุดท้ายของ Shell Scripting เรียงตามลำดับเวลา
- ทำความเข้าใจเคล็ดลับภาษาสคริปต์ Linux Shell ขั้นพื้นฐาน – ตอนที่ 1
- 5 เชลล์สคริปต์สำหรับมือใหม่ Linux เพื่อเรียนรู้การเขียนโปรแกรมเชลล์ – ตอนที่ II
- ท่องโลกของ Linux BASH Scripting – ตอนที่ III
- แง่มุมทางคณิตศาสตร์ของการเขียนโปรแกรม Linux Shell – ส่วนที่ IV
มาเริ่มกันที่ Fibonacci Series
รูปแบบของตัวเลขโดยที่แต่ละตัวเลขเป็นผลรวมของตัวเลขสองตัวก่อนหน้า ซีรีส์คือ 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
ตัวอย่างผลลัพธ์
[[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
ดาวน์โหลด Fibonacci.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 [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
ตัวอย่างผลลัพธ์
[[email protected] ~]# chmod 755 Decimal2Binary.sh [[email protected] ~]# ./Decimal2Binary.sh 1121 Decimal Binary 1121 10001100001
หมายเหตุ :สคริปต์ด้านบนยอมรับอินพุต ณ รันไทม์ ซึ่งเห็นได้ชัดว่าเป็นตัวช่วย
ดาวน์โหลด Decimal2Binary.sh
ดี inbuilt 'bc ' คำสั่งแปลง ทศนิยม เป็น ไบนารี ในสคริปต์ของบรรทัดเดียว วิ่งที่เทอร์มินัลของคุณ
[[email protected] ~]# echo "obase=2; NUM" | bc
แทนที่ 'NUM ' ด้วยตัวเลขที่คุณต้องการแปลงจาก ทศนิยม เป็น ไบนารี . ตัวอย่างเช่น
[[email protected] ~]# 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
ตัวอย่างผลลัพธ์
[[email protected] ~]# chmod 755 Binary2Decimal.sh [[email protected] ~]# ./Binary2Decimal.sh Enter a number : 11 3
หมายเหตุ :ฟังก์ชั่นข้างต้นสามารถทำได้ในเทอร์มินัลโดยใช้ 'bc ' คำสั่งเป็น.
[[email protected] ~]# echo "ibase=2; BINARY" | bc
แทนที่ 'ไบนารี ' ด้วยเลขฐานสอง กล่าวคือ
[[email protected] ~]# echo "ibase=2; 11010101" | bc 213
ดาวน์โหลด Binary2Decimal.sh
ในทำนองเดียวกัน คุณสามารถเขียนการแปลงจาก ฐานแปด , เลขฐานสิบหก เป็น ทศนิยม และในทางกลับกันเอง การบรรลุผลข้างต้นในเทอร์มินัลโดยใช้ 'bc 'คำสั่งคือ.
ทศนิยมเป็นฐานสิบ
[[email protected] ~]# echo "obase=8; Decimal" | bc
ทศนิยมเป็นเลขฐานสิบหก
[[email protected] ~]# echo "obase=16; Decimal" | bc
ฐานแปดถึงทศนิยม
[[email protected] ~]# echo "ibase=8; Octal" | bc
ฐานสิบหกเป็นทศนิยม
[[email protected] ~]# echo "ibase=16; Hexadecimal" | bc
ไบนารีถึง Octal
[[email protected] ~]# 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 . เร็วๆ นี้ผมจะมาพร้อมกับหัวข้อที่น่าสนใจอีกหัวข้อหนึ่ง พวกคุณจะชอบอ่าน แบ่งปันความคิดอันมีค่าของคุณในส่วนความคิดเห็น .