Số học trong Bash

Cách thêm tính toán vào tập lệnh Bash

Mặc dù Bash là một ngôn ngữ kịch bản, nó có khá nhiều khả năng của một ngôn ngữ lập trình mục đích chung. Điều này bao gồm các hàm số học. Có một số tùy chọn cú pháp bạn có thể sử dụng để gợi lên đánh giá số học của một biểu thức. Có lẽ điều dễ đọc nhất là lệnh let . Ví dụ

để "m = 4 * 1024"

sẽ tính 4 lần 1024 và gán kết quả cho biến "m".

Bạn có thể in ra kết quả bằng cách thêm một câu lệnh echo :

để cho "m = 4 * 1024" echo $ m

Bạn có thể kiểm tra điều này từ dòng lệnh bằng cách nhập mã sau:

để "m = 4 * 1024"; echo $ m

Bạn cũng có thể tạo một tệp có chứa các lệnh Bash, trong trường hợp này bạn nên thêm một dòng ở đầu tệp chỉ định chương trình được yêu cầu thực thi mã. Ví dụ:

#! / bin / bash để "m = 4 * 1024" echo $ m

giả sử thực thi Bash nằm trong / bin / bash . Bạn cũng cần phải thiết lập các quyền của tập tin kịch bản của bạn để nó có thể thực thi được. Giả sử tên tệp kịch bản lệnh là script1.sh , bạn có thể đặt quyền để làm cho tệp có thể thực thi bằng lệnh:

chmod 777 script1.sh

Sau đó bạn có thể thực thi nó bằng lệnh:

./script1.sh

Các phép tính số học có sẵn tương tự như trong các ngôn ngữ lập trình chuẩn như Java và C. Bên cạnh phép nhân, như minh họa ở trên, bạn sử dụng phần bổ sung:

để "m = a + 7"

hoặc trừ:

để "m = a - 7"

hoặc chia:

để "m = a / 2"

hoặc modulo (phần còn lại sau khi phân chia số nguyên):

để "m = a% 100"

Khi một hoạt động được áp dụng cho cùng một biến mà kết quả được gán, bạn có thể sử dụng toán tử gán số học tiêu chuẩn số học, cũng được gọi là toán tử gán phân. Ví dụ, để bổ sung, chúng tôi có:

để "m + = 15"

tương đương với "m = m + 15". Đối với phép trừ, chúng ta có:

để "m - = 3"

tương đương với "m = m - 3". Đối với bộ phận chúng tôi có:

để "m / = 5"

tương đương với "m = m / 5". Và đối với modulo, chúng ta có:

để "m% = 10"

tương đương với "m = m% 10".

Ngoài ra, bạn có thể sử dụng toán tử tănggiảm :

để "m + +"

tương đương với "m = m + 1". Và

để "m--"

tương đương với "m = m - 1".

Và sau đó có toán tử "dấu chấm hỏi dấu chấm phẩy" thứ ba, trả về một trong hai giá trị tùy thuộc vào điều kiện được chỉ định là đúng hay sai. Ví dụ

để "k = (m <9)? 0: 1"

Phía bên tay phải của câu lệnh gán này đánh giá là "0" nếu biến "m" nhỏ hơn 9. Nếu không, nó ước lượng thành 1. Điều này có nghĩa là biến "k" được gán "0" nếu "m" ít hơn hơn 9 và "1" nếu không.

Dạng chung của toán tử dấu chấm câu là:

điều kiện ? value-if-true: giá trị-if-false

Số học dấu chấm động trong Bash

Toán tử let chỉ hoạt động cho số học số nguyên. Đối với số học dấu chấm động bạn có thể sử dụng ví dụ như máy tính bc GNU như minh họa trong ví dụ này:

echo "32.0 + 1.4" | bc

Toán tử "đường ống" "|" chuyển biểu thức số học "32.0 + 1.4" vào máy tính bc, trả về số thực. Lệnh echo in kết quả vào đầu ra tiêu chuẩn.

Cú pháp thay thế cho số học

Backticks (dấu ngoặc đơn trở lại) có thể được sử dụng để đánh giá một biểu thức số học như trong ví dụ này:

echo `expr $ m + 18`

Điều này sẽ thêm 18 vào giá trị của biến "m" và sau đó in ra kết quả.

Để gán giá trị tính toán cho một biến, bạn có thể sử dụng dấu bằng mà không có dấu cách xung quanh nó:

m = `expr $ m + 18`

Một cách khác để đánh giá biểu thức số học là sử dụng dấu ngoặc kép. Ví dụ:

((m * = 4))

Điều này sẽ tăng gấp bốn lần giá trị của biến "m".

Bên cạnh việc đánh giá số học, vỏ Bash cung cấp các cấu trúc lập trình khác, chẳng hạn như các vòng lặp for-loop , while-loop , các điều kiện và các hàm và các chương trình con .