คณิตศาสตร์เป็นเรื่องง่าย การเขียนสคริปต์ 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 ซึ่งมีรายละเอียดระบุไว้ในคู่มือผู้ใช้