<ก่อนหน้านี้ | Contents | ถัดไป>
เลขคณิตอย่างง่าย
ตัวดำเนินการเลขคณิตธรรมดาแสดงอยู่ในตารางด้านล่าง:
ตารางที่ 34-3: ตัวดำเนินการเลขคณิต
คำอธิบายผู้ประกอบการ
คำอธิบายผู้ประกอบการ
+ นอกจากนี้
- การลบ
* การคูณ
/ การหารจำนวนเต็ม
** ยกกำลัง
% โมดูโล่ (ที่เหลือ)
สิ่งเหล่านี้ส่วนใหญ่อธิบายตนเองได้ แต่การหารจำนวนเต็มและโมดูโลต้องการการอภิปรายเพิ่มเติม
เนื่องจากเลขคณิตของเชลล์ทำงานด้วยจำนวนเต็มเท่านั้น ผลลัพธ์ของการหารจึงเป็นจำนวนเต็มเสมอ:
[me@linuxbox ~]$ เสียงสะท้อน $(( 5 / 2 ))
2
[me@linuxbox ~]$ เสียงสะท้อน $(( 5 / 2 ))
2
สิ่งนี้ทำให้การกำหนดส่วนที่เหลือในการดำเนินการหารมีความสำคัญมากขึ้น:
[me@linuxbox ~]$ เสียงสะท้อน $(( 5 % 2 ))
1
[me@linuxbox ~]$ เสียงสะท้อน $(( 5 % 2 ))
1
โดยใช้ตัวดำเนินการหารและโมดูโล เราสามารถระบุได้ว่า 5 หารด้วย 2 ผลลัพธ์เป็น 2 โดยเหลือเศษ 1
การคำนวณส่วนที่เหลือมีประโยชน์ในการวนซ้ำ อนุญาตให้ดำเนินการตามช่วงเวลาที่กำหนดระหว่างการดำเนินการของลูป ในตัวอย่างด้านล่าง เราแสดงบรรทัดของตัวเลข โดยเน้นแต่ละผลคูณของ 5:
#! / bin / ทุบตี
# modulo: สาธิตตัวดำเนินการ modulo สำหรับ ((i = 0; i <= 20; i = i + 1)); ทำ
ส่วนที่เหลือ=$((ผม % 5))
ถ้า (( เศษ == 0 )); จากนั้น printf "<%d> " $i
อื่น
printf "%d " $i
เสร็จแล้ว
printf "\ n"
#! / bin / ทุบตี
# modulo: สาธิตตัวดำเนินการ modulo สำหรับ ((i = 0; i <= 20; i = i + 1)); ทำ
ส่วนที่เหลือ=$((ผม % 5))
ถ้า (( เศษ == 0 )); จากนั้น printf "<%d> " $i
อื่น
printf "%d " $i
เสร็จแล้ว
printf "\ n"
เมื่อดำเนินการแล้ว ผลลัพธ์จะมีลักษณะดังนี้:
[me@linuxbox ~]$ โมดูล
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>
[me@linuxbox ~]$ โมดูล
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>