Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

คณิตศาสตร์/เลขคณิตในสคริปต์ทุบตี/เชลล์ พร้อมตัวอย่าง

คณิตศาสตร์เป็นเรื่องง่าย การเขียนสคริปต์ Bash นั้นง่าย ดังนั้นการดำเนินการทางคณิตศาสตร์/เลขคณิตในสคริปต์ Bash/Shell ก็ควรจะง่ายเช่นกัน ใช่เลย นี่คือวิธีการ

การทำงานกับจำนวนเต็ม

เลขคณิตในตัวของ Bash สามารถจัดการค่าจำนวนเต็ม (จำนวนเต็ม) เท่านั้น หากคุณพยายามประกาศตัวแปรด้วยค่าที่ไม่ใช่จำนวนเต็ม:

declare -i e=2.5

คุณจะเห็นสิ่งต่อไปนี้:

bash: declare: 2.5: syntax error: invalid arithmetic operator (error token is ".5")

ในการทำงานกับตัวเลขที่ไม่ใช่จำนวนเต็ม คุณจะต้องใช้โปรแกรมภายนอกเพื่อทำการคำนวณของคุณ แต่ก่อนอื่น ต่อไปนี้คือวิธีใช้เลขคณิต Bash ในตัวเพื่อทำงานกับจำนวนเต็ม

การใช้การประกาศตัวแปร

หากตัวแปรของคุณถูกประกาศเป็นจำนวนเต็มโดยใช้ ประกาศ คำสั่ง คุณสามารถคำนวณโดยไม่ต้องพิจารณาเป็นพิเศษ:

# Declaring variables as integers
declare -i x=4
declare -i y=2

# Performing arithmetic with integer variables
result=x/y 

echo $result

สิ่งนี้จะกลับมา:

2

คำสั่งทางคณิตศาสตร์ไม่จำเป็นต้องอยู่ในวงเล็บสำหรับการประเมิน หากตัวแปรถูกประกาศเป็นจำนวนเต็ม

การใช้วงเล็บคู่/วงเล็บ

หากตัวแปรของคุณไม่ได้ประกาศอย่างเฉพาะเจาะจงว่าเป็นจำนวนเต็ม ถูกส่งผ่านเป็นพารามิเตอร์สคริปต์ หรือเอาต์พุตจากโปรแกรม ตัวแปรเหล่านั้นจะถือว่าเป็นสตริงโดยค่าเริ่มต้น

Bash มีความสามารถในการจัดการกับสตริงในเลขคณิต – แต่เฉพาะในกรณีที่นิพจน์ถูกตั้งค่าสถานะเป็นนิพจน์เลขคณิตโดยใช้วงเล็บคู่ . ดูตัวอย่างด้านล่าง:

x = 6
((y=$x+3))
echo $y

ข้อมูลโค้ดสคริปต์ทุบตีด้านบนจะแสดงการประเมินนิพจน์ที่ถูกต้อง:

9

…เนื่องจากนิพจน์เลขคณิตในวงเล็บถูกตีความอย่างถูกต้องว่ามีตัวแปรที่มีตัวเลข แทนที่จะถือว่าเป็นสตริง

ไม่มีวงเล็บ:

y=$x+3

คุณจะได้ผลลัพธ์:

6+3

นิพจน์จะถือว่าเป็นการรวมสองสตริงและไม่ได้รับการประเมิน

ตัวดำเนินการทางคณิตศาสตร์ที่รองรับ

เลขคณิตในตัวของ Bash รองรับตัวดำเนินการต่อไปนี้:

+ เพิ่มเติม
การลบ
++ เพิ่มขึ้น
ลดค่า
* การคูณ
/ ดิวิชั่น
% ที่เหลือ
** การยกกำลัง

บูลีนและเลขคณิต

นอกจากนี้ยังเห็นเครื่องหมายวงเล็บคู่เมื่อใช้ตัวดำเนินการบูลีน เนื่องจากนิพจน์ที่ประเมินจะคืนค่า 0 หรือ 1:

if (( x > y )); then
    echo "x is greater than y"
fi

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Bash Boolean Operations ที่นี่

การทำงานกับค่าทศนิยม

การใช้ bc คำสั่ง

ดังที่แสดงไว้ก่อนหน้าในบทความ การใช้ Bash arithmetic ที่มีค่าที่ไม่ใช่จำนวนเต็มจะส่งผลให้เกิดข้อผิดพลาด

ที่ bc คำสั่งสามารถจัดการค่าทศนิยม (และคณิตศาสตร์ที่ซับซ้อนมากขึ้น) นี่คือไวยากรณ์:

bc OPTIONS FILE

ที่ไหน:

  • OPTIONS คือรายการตัวเลือก (ดูที่นี่สำหรับรายการตัวเลือกทั้งหมด)
  • FILE คือพาธไปยังไฟล์ข้อความที่มีเลขคณิตที่ต้องแก้ไข

เป็น ก่อนคริสต์ศักราช จะยอมรับอินพุตที่ส่งไปยังมัน คุณไม่จำเป็นต้องเก็บสมการของคุณในไฟล์ คุณสามารถไพพ์ได้โดยตรงจากคอนโซล:

echo "2.32+3.45" | bc

…ซึ่งจะแสดงคำตอบที่ถูกต้องของ:

5.77

นี่คือบทสรุปทั้งหมดเกี่ยวกับการวางท่อและการเปลี่ยนเส้นทางของแอปพลิเคชันบรรทัดคำสั่งและเอาต์พุต

คุณสามารถดูคู่มือผู้ใช้ bc ฉบับเต็มได้โดยเรียกใช้:

man bc

มีไวยากรณ์ขั้นสูงมากมายสำหรับคณิตศาสตร์ที่ซับซ้อนสำหรับคำสั่ง bc ซึ่งมีรายละเอียดระบุไว้ในคู่มือผู้ใช้