NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
21/12/2024
Lượt xem

Hướng dẫn sử dụng lệnh let trong Linux để thực hiện các phép tính toán học

21/12/2024
17 phút đọc
Lượt xem

Đánh giá

Lệnh let trong Linux giúp bạn thực hiện các phép tính toán học như cộng, trừ, nhân, chia và thực hiện các phép tính bit khác nhau. Kết quả của phép tính có thể được lưu vào một biến để sử dụng sau đó. Trong bài viết này, Vietnix sẽ giới thiệu đến bạn một số cách sử dụng let thông qua các ví dụ cụ thể.

Những điểm chính

  • Hiểu rõ lệnh let trong Linux: Bạn sẽ nắm được định nghĩa, mục đích và cách sử dụng lệnh let. Ngoài ra, bài viết cũng cung cấp cú pháp cơ bản và các toán tử số học hỗ trợ.
  • Khám phá cách áp dụng lệnh let trong các tình huống thực tế: Bạn sẽ biết cách áp dụng let trong thực tế thông qua các trường hợp sử dụng cụ thể.
  • Hiểu được trạng thái thoát của lệnh let: Bạn sẽ hiểu cách kiểm tra kết quả của phép tính và xử lý lỗi, từ đó viết các script bash tốt hơn, kiểm soát được luồng thực thi.
  • Nắm được các lựa chọn thay thế cho lệnh let: Bạn sẽ được tìm hiểu thêm các lựa chọn khác để thực hiện phép toán số học trong shell.
  • Vietnix – Giải pháp công nghệ tối ưu, đồng hành cùng doanh nghiệp.

Lệnh let trong Linux là gì?

Lệnh let là một lệnh được tích hợp sẵn trong Linux, giúp bạn thực hiện các phép tính toán ngay trong terminal. Bạn có thể cộng (+), trừ (-), nhân (*), chia (/) và thực hiện nhiều phép toán khác một cách dễ dàng. Lệnh let còn hỗ trợ cả các phép toán bit như AND, OR, XOR để mở rộng khả năng tính toán. Điểm đặc biệt của lệnh let là khả năng gán kết quả tính toán trực tiếp vào một biến, giúp bạn lưu trữ và sử dụng lại giá trị này sau đó.

Lệnh let trong Linux giúp bạn thực hiện các phép tính toán trong terminal
Lệnh let trong Linux giúp bạn thực hiện các phép tính toán trong terminal

Cú pháp của lệnh let trong Linux như sau:

let arg [arg ...]

Trong đó: 

  • let là tên lệnh.
  • arg là biểu thức số học bắt buộc phải có. 
  • [arg …] là các biểu thức số học bổ sung. arg nằm trong dấu ngoặc vuông [] là các đối số tùy chọn. Ba dấu chấm … sau arg cho biết có thể thêm nhiều biểu thức, cách nhau bởi dấu cách. Lệnh let sẽ tính toán tất cả các biểu thức này.

Các toán tử số học sử dụng với lệnh let

Lệnh let hỗ trợ nhiều toán tử khác nhau, cho phép bạn thực hiện các phép tính số học và bit. Dưới đây là bảng liệt kê các toán tử phổ biến:

Toán tửMô tả
id++, id--Tăng/giảm biến sau: Lấy giá trị biến id, sau đó cộng/trừ 1 vào nó.
++id, --idTăng/giảm biến trước: Cộng/trừ 1 vào biến id, sau đó lấy giá trị mới.
-expr, +exprToán tử âm/dương: Nhân giá trị biểu thức với -1 hoặc +1.
+, –Phép cộng, phép trừ.
**Phép lũy thừa.
<<, >>Dịch bit trái/phải.
&Toán tử AND bit.
^Toán tử XOR bit.
|Toán tử OR bit.
Toán tử số học với lệnh let

iconLưu ý

Để xem tất cả các toán tử có sẵn, bạn có thể xem trang trợ giúp của lệnh let bằng lệnh help let.

Ví dụ 1: Sử dụng lệnh let để thực hiện các phép toán số học

Để thực hiện các phép tính, đầu tiên chúng ta sẽ gán giá trị cho hai biến, sau đó thực hiện phép toán và hiển thị kết quả. Bạn có thể gõ các lệnh sau vào terminal:

let "num1 = 9" "num2 = 5" "num3=num1+num2"; echo $num3
let "num1 = 9" "num2 = 5" "num3=num1-num2"; echo $num3
let "num1 = 9" "num2 = 5" "num3=num1*num2"; echo $num3
let "num1 = 9" "num2 = 5" "num3=num1/num2"; echo $num3
let "num1 = 9" "num2 = 5" "num3=num1%num2"; echo $num3

Kết quả: Các lệnh trên sẽ lần lượt gán giá trị 9 và 5 cho các biến num1num2, sau đó thực hiện các phép toán cộng, trừ, nhân, chia và chia lấy dư, rồi lưu kết quả vào biến num3. Cuối cùng, lệnh echo sẽ hiển thị giá trị của num3. Như bạn thấy trong các kết quả trên, lệnh let giúp thực hiện các phép tính cơ bản một cách dễ dàng.

Thực hiện các phép toán số học
Thực hiện các phép toán số học

iconLưu ý

Bạn nên sử dụng dấu ngoặc kép cho mỗi biểu thức và sử dụng dấu chấm phẩy ở cuối mỗi phép toán.

Ví dụ 2: Sử dụng lệnh let để thực hiện các phép toán đơn vị âm và dương

Bạn cũng có thể sử dụng dấu trừ (-) phía trước một biến để đổi dấu giá trị của biến đó. Ví dụ:

let "num1 = 9" "num1 = -num1"; echo $num1

Kết quả: Lệnh này sẽ gán giá trị 9 cho num1, sau đó đổi dấu của num1 thành -9 và hiển thị kết quả.

Thực hiện các phép toán đơn vị âm và dương
Thực hiện các phép toán đơn vị âm và dương

iconLưu ý

Dấu cộng (+) phía trước biến sẽ không thay đổi giá trị, nhưng đôi khi giúp code dễ đọc hơn, đặc biệt trong các script dài.

Ví dụ 3: Sử dụng lệnh let với toán tử lũy thừa (**)

Để tính lũy thừa (số mũ) của một số, bạn có thể dùng toán tử ** với lệnh let. Ví dụ, để tính 9 lũy thừa 2 (hay 9 bình phương), hãy dùng lệnh:

let "num1 = 9 ** 2" ; echo $num1

Kết quả: Lệnh này sẽ tính 9 mũ 2 và in ra kết quả là 81.

Toán tử lũy thừa
Toán tử lũy thừa

Ví dụ 4: Sử dụng toán tử tăng/giảm với lệnh let

Các toán tử tăng/giảm (++, –) cho phép bạn tăng hoặc giảm giá trị của biến trước hoặc sau khi sử dụng.

Trường hợp 1: Toán tử hậu tố tăng (id++) và hậu tố giảm (id–)

Để tăng/giảm giá trị của biến sau khi thực hiện, dùng num++ hoặc num--. Ví dụ:

let "num1 = 5" "num2=num1++"; echo $num1 $num2
let "num1 = 5" "num2=num1--"; echo $num1 $num2

Kết quả: Bạn có thể thấy, ban đầu num1num2 đều có giá trị là 5. Sau khi thực hiện num1++, giá trị của num1 sẽ tăng lên 6. Tương tự, sau khi num1--, giá trị của num1 giảm xuống 4.

Toán tử hậu tố tăng và hậu tố giảm
Toán tử hậu tố tăng và hậu tố giảm

iconLưu ý

Khi bạn gán một giá trị mới cho biến đã được định nghĩa trước đó, giá trị cũ sẽ bị ghi đè.

Trường hợp 2: Toán tử tiền tố tăng (++id) và tiền tố giảm (–id)

Để tăng/giảm giá trị của biến trước khi thực hiện, dùng ++num hoặc --num. Ví dụ:

let "num1 = 5" "num2=++num1"; echo $num1 $num2
let "num1 = 5" "num2=--num1"; echo $num1 $num2

Kết quả: Ở dòng đầu, num1 tăng lên 6 trước khi gán cho num2. Tương tự ở dòng hai, num1 giảm xuống 4 trước khi gán cho num2. Vậy, cả num1num2 đều có giá trị giống nhau sau các phép tăng/giảm trước.

Toán tử tiền tố tăng và tiền tố giảm
Toán tử tiền tố tăng và tiền tố giảm

Ví dụ 5: Sử dụng lệnh let cho các phép toán bit

Để thực hiện các phép toán bit như AND, OR, XOR,… bạn có thể sử dụng lệnh let theo các ví dụ sau đây:

Trường hợp 1: Sử dụng toán tử AND bit

Phép toán AND bit (ký hiệu &) so sánh từng cặp bit tương ứng của hai số. Kết quả bit sẽ là 1 nếu cả hai bit tương ứng đều là 1; ngược lại là 0. Ví dụ:

let "num1 = 5" "num2 = 6" "num3=num1&num2"; echo $num3
Sử dụng toán tử AND bit
Sử dụng toán tử AND bit

Kết quả là 4. Vì:

  • Số 5 ở dạng nhị phân là 101
  • Số 6 ở dạng nhị phân là 110

So sánh từng bit:

  • 1 & 1 = 1
  • 0 & 1 = 0
  • 1 & 0 = 0

Vậy kết quả nhị phân là 100, tương ứng với số 4 trong hệ thập phân.

Trường hợp 2: Sử dụng toán tử OR bit

Phép toán OR bit (ký hiệu |) so sánh các bit tương ứng của hai số. Kết quả bit sẽ là 1 nếu ít nhất một trong hai bit tương ứng là 1; ngược lại là 0. Thử lệnh sau:

let "num1 = 5" "num2 = 6" "num3=num1|num2"; echo $num3
Sử dụng toán tử OR bit
Sử dụng toán tử OR bit

Kết quả là 7, vì:

  • Số 5 ở dạng nhị phân là 101
  • Số 6 ở dạng nhị phân là 110

So sánh từng bit:

  • 1 | 1 = 1
  • 0 | 1 = 1
  • 1 | 0 = 1

Vậy kết quả nhị phân là 111, tương ứng với số 7 trong hệ thập phân.

Trường hợp 3: Sử dụng toán tử XOR bit

Phép toán XOR bit (ký hiệu ^) so sánh các bit tương ứng. Kết quả bit là 0 nếu hai bit giống nhau; là 1 nếu hai bit khác nhau. Ví dụ:

let "num1 = 5" "num2 = 6" "num3=num1^num2"; echo $num3
Sử dụng toán tử XOR bit
Sử dụng toán tử XOR bit

Kết quả là 3, vì:.

  • Số 5 ở dạng nhị phân là 101
  • Số 6 ở dạng nhị phân là 110

So sánh từng bit:

  • 1 ^ 1 = 0
  • 0 ^ 1 = 1
  • 1 ^ 0 = 1

Vậy kết quả nhị phân là 011, tương ứng với số 3 trong hệ thập phân.

Trường hợp 4: Sử dụng toán tử NOT bit

Phép toán NOT bit (ký hiệu ~) sẽ đảo ngược các bit của một số. Tức là 1 thành 0 và 0 thành 1. Ví dụ:

let "num1 = 5" "num1 = ~num1"; echo $num1
Sử dụng toán tử NOT bit
Sử dụng toán tử NOT bit

Kết quả sẽ là -6. Trong máy tính, số 5 được biểu diễn dưới dạng nhị phân 32-bit là 000…0101 (có 29 số 0 ở trước). Phép đảo bit sẽ biến nó thành 111…1010, đây là biểu diễn bù hai của số -6.

Trường hợp 5: Sử dụng phép dịch bit trái / phải

Bạn có thể dịch chuyển các bit của một số sang trái hoặc phải bằng toán tử <<>> theo số vị trí nhất định. Ví dụ:

let "num1 = 4 << 1"; echo $num1
let "num1 = 4 >> 1"; echo $num1
Sử dụng phép dịch bit trái / phải
Sử dụng phép dịch bit trái / phải
  • Dịch trái: số 4 có dạng nhị phân 100. Khi dịch trái 1 bit (4 << 1), nó thành 1000, tương ứng với số 8 trong hệ thập phân.
  • Dịch phải: số 4 có dạng nhị phân 100. Khi dịch phải 1 bit (4 >> 1), nó thành 10, tương ứng với số 2 trong hệ thập phân.

Trạng thái thoát (Exit Status) của lệnh let

Trạng thái thoát (exit status) của lệnh let phụ thuộc vào kết quả của biểu thức cuối cùng. Nếu kết quả cuối cùng khác 0, trạng thái thoát là 0; ngược lại (kết quả cuối cùng là 0), trạng thái thoát là 1. Xem các ví dụ sau:

let “num1 = 9” “num2 = 5”; echo $?
let “num1 = 9” “num2 = 0”; echo $?
let “num1 = 9” “num2 = -5”; echo $?
Trạng thái thoát (Exit Status) của lệnh let
Trạng thái thoát (Exit Status) của lệnh let

Như trong hình minh họa ở trên, trạng thái thoát của lệnh let phụ thuộc vào kết quả của biểu thức ngoài cùng bên phải. Khi biểu thức ngoài cùng bên phải (giá trị của biến num2 trong ví dụ này) khác 0, trạng thái thoát là 0. Ngược lại, khi biểu thức ngoài cùng bên phải là 0, trạng thái thoát trở thành 1. 

Bạn có thể sử dụng trạng thái kết thúc của let để gỡ lỗi, kiểm tra xem phép tính đã thành công hay không hoặc để điều khiển các vòng lặp trong script.

Mặc dù lệnh let khá hữu ích để thực hiện các phép toán số học, nhưng có một số lựa chọn thay thế cho lệnh này.

Trường hợp 1: Sử dụng mở rộng số học (arithmetic expansion) hoặc đánh giá số học (arithmetic evaluation)

Bạn có thể dùng mở rộng số học (cú pháp $((…))) hoặc đánh giá số học (cú pháp ((…))) thay cho lệnh let. Ví dụ, thay vì dùng let để cộng hai số, bạn có thể viết như sau:

num1=9; num2=5; num3=$((num1+num2)); echo $num3
num1=9; num2=5; ((num3=num1+num2)); echo $num3
  • Dòng đầu sử dụng mở rộng số học, $((num1+num2)) sẽ tính tổng của num1 và num2, gán vào num3.
  • Dòng thứ hai là một ví dụ của việc đánh giá số học, ((num3=num1+num2)) cũng thực hiện tương tự, tính tổng và gán giá trị.

Cả hai cách trên đều cho ra kết quả tương tự nhau.

 Sử dụng mở rộng số học
Sử dụng mở rộng số học

Trường hợp 2: Sử dụng lệnh expr thay thế cho lệnh let

Bạn cũng có thể sử dụng lệnh expr để tính toán tương tự như let. Để thực hiện các phép toán cộng, trừ, nhân, chia như ở ví dụ 1, bạn dùng các lệnh sau:

num1=9; num2=5; num3=$(expr $num1 + $num2); echo $num3
num1=9; num2=5; num3=$(expr $num1 - $num2); echo $num3
num1=9; num2=5; num3=$(expr $num1 \* $num2); echo $num3
num1=9; num2=5; num3=$(expr $num1 \/ $num2); echo $num3

Ở đây, lệnh expr sẽ tính toán biểu thức sau đó lệnh $(…) sẽ lấy kết quả của expr và gán cho num3.

iconLưu ý

Khi làm việc với số nguyên, bạn không nhất thiết phải khai báo kiểu biến (ví dụ: declare -i).

Sử dụng lệnh expr thay cho lệnh let
Sử dụng lệnh expr thay cho lệnh let

Vietnix – Giải pháp công nghệ tối ưu, đồng hành cùng doanh nghiệp

Với hơn 100.000 dịch vụ được kích hoạt, Vietnix đã khẳng định vị thế trong ngành công nghệ tại Việt Nam. Hoạt động dựa trên giá trị cốt lõi lấy thành công của khách hàng làm mục tiêu, Vietnix mang đến các giải pháp công nghệ hiệu quả, giúp doanh nghiệp tối ưu hóa vận hành và nâng cao hiệu quả kinh doanh.

Dịch vụ VPS AMD của Vietnix được thiết kế nhằm đáp ứng nhu cầu về hiệu suất và độ ổn định cao cho các doanh nghiệp. Với CPU AMD EPYC và băng thông lớn, khả năng truyền tải ổn định, dịch vụ VPS phù hợp cho các ứng dụng đòi hỏi tài nguyên mạnh mẽ. Đội ngũ kỹ thuật viên hỗ trợ 24/7, đảm bảo dịch vụ vận hành liên tục và hiệu quả.

Thông tin liên hệ:

  • Hotline: 18001093
  • Email: sales@vietnix.com.vn 
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/ 

Bài viết này đã trình bày chi tiết về cú pháp, cách sử dụng cũng như các ví dụ minh họa về let trong Linux. Nắm vững lệnh let và các phương pháp tương đương sẽ giúp bạn viết script shell hiệu quả hơn, từ việc thực hiện các phép tính đơn giản đến việc xây dựng các logic phức tạp. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để tận dụng tối đa sức mạnh của let trong công việc hàng ngày với Linux.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

PHẦN CỨNG MẠNH MẼ

HỖ TRỢ 24/7

ĐĂNG KÝ NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG