Bash Scripting เบื้องต้น
Alex Scriven
Data Scientist
Shell ไม่รองรับตัวเลขโดยตรงเหมือน REPL (คอนโซล) อย่าง R และ Python
ใน Python หรือ R สามารถทำได้:
>>> 1 + 4
5
ได้ผลลัพธ์ที่ต้องการเลย!
ตัวเลขไม่ได้รับการรองรับโดยตรง:
(ในเทอร์มินัล)
1 + 4
bash: 1: command not found
expr เป็นโปรแกรมยูทิลิตีที่มีประโยชน์ (เหมือนกับ cat หรือ grep)
วิธีนี้จะใช้งานได้ (ในเทอร์มินัล):
expr 1 + 4
5
ดีมาก!
expr ไม่รองรับทศนิยมโดยตรง:
(ในเทอร์มินัล)
expr 1 + 2.5
expr: not a decimal number: '2.5'
แต่ไม่ต้องกังวล! (มีวิธีแก้ไข)
bc (basic calculator) เป็นโปรแกรม command-line ที่มีประโยชน์
เปิดใช้งานในเทอร์มินัลเพื่อคำนวณได้เลย:

ใช้ bc โดยไม่ต้องเปิดเครื่องคิดเลขได้ด้วยการ pipe:
echo "5 + 7.5" | bc
12.5
bc มีอาร์กิวเมนต์ scale สำหรับกำหนดจำนวนทศนิยม
echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc
สังเกตการใช้ ; เพื่อแบ่ง "บรรทัด" ในเทอร์มินัล
3.333
กำหนดตัวแปรตัวเลขได้เหมือนกับตัวแปรสตริง:
dog_name='Roger' dog_age=6echo "My dog's name is $dog_name and he is $dog_age years old"
ระวัง: dog_age="6" ใช้ได้ แต่จะกลายเป็นสตริง!
My dog's name is Roger and he is 6 years old
รูปแบบวงเล็บคู่สำหรับตัวแปรตัวเลข:
expr 5 + 7
echo $((5 + 7))
12
12
ระวัง: วิธีนี้ใช้ expr ไม่ใช่ bc (ไม่รองรับทศนิยม!)
จำที่เรียกใช้ shell ภายใน shell จากบทที่แล้วได้ไหม?
มีประโยชน์มากสำหรับตัวแปรตัวเลข:
model1=87.65 model2=89.20echo "The total score is $(echo "$model1 + $model2" | bc)"echo "The average score is $(echo "($model1 + $model2) / 2" | bc)"
The total score is 176.85
The average score is 88
Bash Scripting เบื้องต้น