expr command in linux

Tìm hiểu lệnh expr trong Linux: Hướng dẫn chi tiết cho người mới bắt đầu

Chào mừng bạn đến với thế giới dòng lệnh Linux! Nếu bạn đang tìm kiếm một công cụ mạnh mẽ để thực hiện các phép toán số học và so sánh chuỗi ngay trên terminal, thì lệnh expr chính là thứ bạn cần. Trong bài viết này, chúng ta sẽ cùng nhau khám phá lệnh expr một cách chi tiết, từ cú pháp cơ bản đến các ứng dụng thực tế, giúp bạn làm chủ công cụ hữu ích này.

expr là một lệnh dòng lệnh trong Linux được sử dụng để đánh giá các biểu thức. Nó có thể thực hiện các phép toán số học, so sánh chuỗi, và thậm chí cả các phép toán logic. Kết quả của biểu thức sẽ được in ra màn hình.

Tại sao nên sử dụng lệnh expr?

Mặc dù có nhiều cách khác để thực hiện các phép toán trong Linux, expr vẫn là một lựa chọn phổ biến vì những lý do sau:

  • Tính đơn giản: Cú pháp của expr khá đơn giản và dễ học, đặc biệt đối với những người mới bắt đầu làm quen với dòng lệnh.
  • Tính linh hoạt: expr có thể được sử dụng trong các shell script để tự động hóa các tác vụ tính toán và so sánh.
  • Tính sẵn có: expr thường được cài đặt sẵn trên hầu hết các дистрибутиви Linux, giúp bạn dễ dàng sử dụng mà không cần cài đặt thêm bất kỳ phần mềm nào.

Cú pháp cơ bản của lệnh expr

Cú pháp cơ bản của lệnh expr như sau:

expr expression

Trong đó, expression là biểu thức mà bạn muốn đánh giá. Các toán tử và toán hạng trong biểu thức phải được phân tách bằng khoảng trắng.

Các phép toán số học với expr

expr hỗ trợ các phép toán số học cơ bản như cộng (+), trừ (-), nhân (), chia (/), và phần dư (%).

Ví dụ về phép cộng:

expr 5 + 3

Kết quả sẽ là 8.

Ví dụ về phép trừ:

expr 10 - 4

Kết quả sẽ là 6.

Ví dụ về phép nhân:

expr 6 \ 7

Lưu ý: Dấu nhân () cần được escape bằng dấu gạch chéo ngược (\) để tránh bị shell hiểu nhầm là ký tự wildcard.

Kết quả sẽ là 42.

Ví dụ về phép chia:

expr 20 / 5

Kết quả sẽ là 4.

Ví dụ về phép phần dư:

expr 17 % 3

Kết quả sẽ là 2 (vì 17 chia 3 dư 2).

Các phép so sánh chuỗi với expr

expr cũng có thể được sử dụng để so sánh chuỗi. Nó hỗ trợ các phép so sánh bằng (=), khác (!=), lớn hơn (>), nhỏ hơn (<), lớn hơn hoặc bằng (>=), và nhỏ hơn hoặc bằng (<=).

Lưu ý: Các phép so sánh chuỗi sẽ trả về 1 nếu đúng và 0 nếu sai.

Ví dụ về so sánh bằng:

expr "hello" = "hello"

Kết quả sẽ là 1.

Ví dụ về so sánh khác:

expr "hello" != "world"

Kết quả sẽ là 1.

Ví dụ về so sánh lớn hơn:

expr "abc" > "abd"

Kết quả sẽ là 0 (vì "abc" nhỏ hơn "abd" theo thứ tự từ điển).

Ứng dụng thực tế của lệnh expr

Bây giờ, chúng ta hãy xem xét một vài ví dụ về cách sử dụng lệnh expr trong thực tế.

Ví dụ 1: Tính tổng của hai số nhập từ bàn phím

Bạn có thể sử dụng lệnh read để nhập hai số từ bàn phím và sau đó sử dụng expr để tính tổng của chúng:


  read -p "Nhập số thứ nhất: " num1
  read -p "Nhập số thứ hai: " num2
  sum=$(expr $num1 + $num2)
  echo "Tổng của hai số là: $sum"
  

Ví dụ 2: Kiểm tra xem một số có phải là số chẵn hay không

Bạn có thể sử dụng phép phần dư (%) để kiểm tra xem một số có chia hết cho 2 hay không:


  read -p "Nhập một số: " num
  remainder=$(expr $num % 2)
  if [ $remainder -eq 0 ]; then
    echo "$num là số chẵn"
  else
    echo "$num là số lẻ"
  fi
  

Ví dụ 3: So sánh độ dài của hai chuỗi

Bạn có thể sử dụng lệnh length trong expr để lấy độ dài của chuỗi và sau đó so sánh chúng:


  string1="hello"
  string2="world"
  len1=$(expr length "$string1")
  len2=$(expr length "$string2")

  if [ $len1 -gt $len2 ]; then
    echo "Chuỗi 1 dài hơn chuỗi 2"
  elif [ $len1 -lt $len2 ]; then
    echo "Chuỗi 2 dài hơn chuỗi 1"
  else
    echo "Hai chuỗi có độ dài bằng nhau"
  fi
  

Bảng so sánh lệnh expr với các phương pháp tính toán khác trong Linux

Tính năng Lệnh expr bc awk
Độ phức tạp của biểu thức Đơn giản, chỉ các phép toán cơ bản Phức tạp hơn, hỗ trợ nhiều hàm toán học Rất linh hoạt, có thể xử lý các biểu thức phức tạp
Số học dấu phẩy động Không hỗ trợ Hỗ trợ Hỗ trợ
Tính sẵn có Thường được cài đặt sẵn Có thể cần cài đặt Thường được cài đặt sẵn
Ứng dụng Các phép toán đơn giản, so sánh chuỗi Tính toán khoa học, tài chính Xử lý dữ liệu, báo cáo

FAQ về lệnh expr

Câu hỏi 1: Làm thế nào để xử lý các biến trong lệnh expr?

Bạn có thể sử dụng dấu đô la ($) để tham chiếu đến giá trị của biến trong lệnh expr. Ví dụ:


  x=10
  y=5
  result=$(expr $x + $y)
  echo $result
  

Câu hỏi 2: Tại sao tôi cần escape dấu nhân () trong lệnh expr?

Dấu nhân () là một ký tự wildcard trong shell, được sử dụng để khớp với nhiều tệp. Để ngăn shell hiểu nhầm dấu nhân là wildcard, bạn cần escape nó bằng dấu gạch chéo ngược (\).

Câu hỏi 3: Lệnh expr có hỗ trợ số học dấu phẩy động không?

Không, lệnh expr chỉ hỗ trợ số học số nguyên. Nếu bạn cần thực hiện các phép toán với số dấu phẩy động, bạn nên sử dụng các công cụ khác như bc hoặc awk.

Kết luận

Lệnh expr là một công cụ hữu ích để thực hiện các phép toán số học và so sánh chuỗi trong Linux. Mặc dù nó có một số hạn chế, nhưng tính đơn giản và tính sẵn có của nó khiến nó trở thành một lựa chọn tốt cho các tác vụ đơn giản. Hy vọng rằng bài viết này đã cung cấp cho bạn một cái nhìn tổng quan về lệnh expr và cách sử dụng nó trong thực tế. Chúc bạn thành công!

Last Updated : 21/08/2025