1. Toán tử số học trong Bash
Trong chủ đề này, chúng ta sẽ hiểu cách sử dụng các toán tử số học trong Bash.
Tùy vào loại kết quả chúng ta muốn thông qua các tập lệnh của mình, chúng ta có thể cần áp dụng các toán tử số học vào một số điểm. Giống như biến, chúng khá dễ áp dụng trong Bash. Trong script bash, chúng ta có thể thực hiện các phép tính số học trên các giá trị số để đạt được kết quả mong muốn.
Có 11 toán tử số học được hỗ trợ bởi Bash Shell.
Hãy xem bảng sau đây để thấy cú pháp, mô tả và ví dụ cho mỗi toán tử số học:
Toán tử | Mô tả | Ví dụ |
---|---|---|
+ | Cộng | expr 2 + 3 sẽ trả về 5 |
– | Trừ | expr 10 - 3 sẽ trả về 7 |
* | Nhân | expr 2 \* 3 sẽ trả về 6 |
/ | Chia | expr 10 / 2 sẽ trả về 5 |
% | Chia lấy dư | expr 10 % 3 sẽ trả về 1 |
= | Gán giá trị | a=10 |
== | So sánh bằng | if [ $a == $b ] |
!= | So sánh khác | if [ $a != $b ] |
> | Lớn hơn | if [ $a > $b ] |
< | Nhỏ hơn | if [ $a < $b ] |
>= | Lớn hơn hoặc bằng | if [ $a >= $b ] |
<= | Nhỏ hơn hoặc bằng | if [ $a <= $b ] |
2. Thực hiện các phép toán số học trong Bash
Có nhiều cách để thực hiện các phép toán số học trên shell Bash. Dưới đây là một số phương pháp mà chúng ta có thể áp dụng để thực hiện các phép toán số học:
Đôi dấu ngoặc đơn Đôi ngoặc đơn là cơ chế dễ nhất để thực hiện các phép toán số học cơ bản trong shell Bash. Chúng ta có thể sử dụng phương pháp này bằng cách sử dụng đôi ngoặc đơn với hoặc không có ký tự $. Cú pháp:
((expression))
Chúng ta có thể áp dụng bốn cách khác nhau để đạt được các mục tiêu yêu cầu. Xem các phương pháp được đưa ra bên dưới để hiểu cách sử dụng cơ chế ngoặc đôi (Double Parentheses) (Giả sử chúng ta muốn cộng hai số 10 và 3):
Phương pháp 1:
Sum=$((10+3))
echo "Sum = $Sum"
Phương pháp 2:
((Sum=10+3))
echo "Sum = $Sum"
Phương pháp 3
Num1=10
Num2=3
((Sum=Num1+Num2))
echo "Sum = $Sum"
Phương pháp 4:
Num1=10
Num2=3
Sum=$((Num1+Num2))
echo "Sum = $Sum"
Tất cả các phương pháp này sẽ cung cấp cùng một kết quả như sau: 13.
Sum = 13
Dưới đây là một ví dụ minh họa về việc sử dụng đôi ngoặc kép để thực hiện các phép tính toán trong một script Bash shell:
Ví dụ 1:
#!/bin/bash
a=10
b=5
echo "Addition"
echo "a + b = $((a + b))"
echo "Subtraction"
echo "a - b = $((a - b))"
echo "Multiplication"
echo "a * b = $((a * b))"
echo "Division"
echo "a / b = $((a / b))"
echo "Modulus"
echo "a % b = $((a % b))"
Trong ví dụ này, chúng ta đã khai báo hai biến a
và b
và sử dụng đôi ngoặc kép để thực hiện các phép tính cộng, trừ, nhân, chia và chia lấy dư trên các biến này. Khi script được thực thi, kết quả của từng phép tính sẽ được hiển thị trên màn hình.
Ví dụ 2:
#!/bin/bash
x=8
y=2
echo "x=8, y=2"
echo "Addition of x & y"
echo $(( $x + $y ))
echo "Subtraction of x & y"
echo $(( $x - $y ))
echo "Multiplication of x & y"
echo $(( $x * $y ))
echo "Division of x by y"
echo $(( $x / $y ))
echo "Exponentiation of x,y"
echo $(( $x ** $y ))
echo "Modular Division of x,y"
echo $(( $x % $y ))
echo "Incrementing x by 5, then x= "
(( x += 5 ))
echo $x
echo "Decrementing x by 5, then x= "
(( x -= 5 ))
echo $x
echo "Multiply of x by 5, then x="
(( x *= 5 ))
echo $x
echo "Dividing x by 5, x= "
(( x /= 5 ))
echo $x
echo "Remainder of Dividing x by 5, x="
(( x %= 5 ))
echo $x
Kết quả
3. Toàn tử với Let
Let là một lệnh tích hợp trong Bash cho phép chúng ta thực hiện các phép toán số học. Nó có định dạng cơ bản như sau:
let <arithmetic expression>
Một ví dụ được cung cấp bên dưới giải thích cách sử dụng lệnh let trong một kịch bản Bash:
#!/bin/bash
#Assigning variables
a=10
b=20
#Adding variables using let
let c=a+b
echo "c = $c"
Trong ví dụ này, chúng ta khởi tạo hai biến a và b với các giá trị tương ứng là 10 và 20. Sau đó, chúng ta sử dụng lệnh let để tính tổng của hai biến và gán kết quả cho biến c. Cuối cùng, chúng ta in kết quả bằng cách sử dụng lệnh echo. Kết quả của ví dụ này là “c = 30”.
Ví dụ 2:
#!/bin/bash
x=10
y=6
z=0
echo "Addition"
let "z = $(( x + y ))"
echo "z= $z"
echo "Substraction"
let "z = $((x - y ))"
echo "z= $z"
echo "Multiplication"
let "z = $(( x * y ))"
echo "z = $z"
echo "Division"
let "z = $(( x / y ))"
echo "z = $z"
echo "Exponentiation"
let "z = $(( x ** y ))"
echo "z = $z"
echo "Modular Division"
let "z = $(( x % y ))"
echo "z = $z"
let "x += 5"
echo "Incrementing x by 5, then x= "
echo $x
let "x -= 5"
echo "Decrementing x by 5, then x= "
echo $x
let "x *=5"
echo "Multiply of x by 5, then x="
echo $x
let "x /= 5"
echo "Dividing x by 5, x= "
echo $x
let "x %= 5"
echo "Remainder of Dividing x by 5, x="
echo $x
Kết quả
4. Toán tử với Backticks.
Backticks là một trong những cách để thực hiện phép tính toán số học trong Bash scripting. Trong đó, một biểu thức số học được đánh giá bởi lệnh expr
(được biết đến như là trình đánh giá biểu thức đa năng). expr
giống như ‘let,’ nhưng nó không lưu kết quả vào một biến. Nó trực tiếp in ra kết quả. Không giống như let, chúng ta không cần phải bao quanh biểu thức trong dấu ngoặc kép. Chúng ta cần sử dụng khoảng trắng giữa các phần của biểu thức. Chúng ta cần sử dụng ‘expr’ trong các chuỗi lệnh để lưu kết quả đầu ra vào một biến.
Chúng ta cũng có thể sử dụng expr
mà không cần dấu ‘backticks’, cú pháp:
`expr item1 operator item2`
or
expr item1 operator item2
Một ví dụ được cung cấp dưới đây để giải thích cách sử dụng backticks và expr trong một script Bash:
#!/bin/bash
#Basic arithmetic using expr
echo "a=10, b=3"
echo "c is the value of addition c=a+b"
a=10
b=3
echo "c= `expr $a + $b`"
Kết quả