Biến số trong Bash

Nhập môn Bash Scripting

Alex Scriven

Data Scientist

Số trong ngôn ngữ khác

Số không được tích hợp sẵn trong shell như hầu hết REPL (console) như R và Python

Trong Python hoặc R bạn có thể làm:

>>> 1 + 4
5

Nó sẽ trả về đúng kết quả!

Nhập môn Bash Scripting

Số trong shell

 

Shell không hỗ trợ số nguyên bản:

(Trong terminal)

1 + 4
bash: 1: command not found
Nhập môn Bash Scripting

Giới thiệu expr

 

expr là tiện ích hữu ích (như cat hoặc grep)

Cái này sẽ chạy (trong terminal):

expr 1 + 4
5

Tốt!

Nhập môn Bash Scripting

Giới hạn của expr

expr không xử lý số thập phân nguyên bản:

(Trong terminal)

expr 1 + 2.5
expr: not a decimal number: '2.5'

Đừng lo! (Có cách)

Nhập môn Bash Scripting

Giới thiệu bc

bc (basic calculator) là chương trình dòng lệnh hữu ích.

Bạn có thể mở trong terminal và tính toán:

Dùng chương trình BC trong shell

Nhập môn Bash Scripting

Đưa số vào bc

 

Dùng bc mà không mở trình tính bằng cách dùng pipe:

echo "5 + 7.5" | bc
12.5
Nhập môn Bash Scripting

Tham số scale của bc

bc có tham số scale để chọn số chữ số thập phân.

echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc

Lưu ý dùng ; để tách các 'dòng' trong terminal

3.333
Nhập môn Bash Scripting

Số trong Bash scripts

Ta có thể gán biến số như biến chuỗi:

dog_name='Roger'
dog_age=6

echo "My dog's name is $dog_name and he is $dog_age years old"

Lưu ý dog_age="6" vẫn chạy, nhưng thành chuỗi!

My dog's name is Roger and he is 6 years old
Nhập môn Bash Scripting

Ký pháp hai ngoặc

Một biến thể của ký pháp ngoặc đơn cho biến số:

expr 5 + 7
echo $((5 + 7))
12
12

Lưu ý cách này dùng expr, không phải bc (không có số thập phân!)

Nhập môn Bash Scripting

Shell lồng trong shell (nhắc lại)

Nhớ cách ta gọi shell lồng nhau ở bài trước?

Rất hữu ích cho biến số:

model1=87.65
model2=89.20

echo "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
Nhập môn Bash Scripting

Ayo berlatih!

Nhập môn Bash Scripting

Preparing Video For Download...