Đôi khi, khi làm việc trên dòng lệnh (đặc biệt là khi xử lý tập lệnh shell), bạn có thể thấy mình trong tình huống phải thực hiện các hành động như tìm kiếm chuỗi con trong chuỗi, tìm chỉ mục của chuỗi đó, cũng như các việc khác như thực hiện phép so sánh và phép toán số học.
Đối với những ai chưa biết, có một tiện ích dòng lệnh - được gọi là expr - cho phép bạn thực hiện tất cả những điều này. Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh này cùng với một số tính năng mà nó cung cấp. Xin lưu ý rằng tất cả các ví dụ và hướng dẫn được đề cập ở đây đều đã được thử nghiệm trên Ubuntu 16.04LTS.
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách thức hoạt động của công cụ này.
Đây là lệnh trên đang hoạt động:
Vì vậy, bạn có thể thấy tổng '11' được tạo ra trong đầu ra. Xin lưu ý rằng một khoảng trắng duy nhất ở mỗi bên của toán tử ('+' trong trường hợp này) là bắt buộc. Nếu không, lệnh expr sẽ tạo ra kết quả đầu ra sau:
điều này rõ ràng là sai và không phải là điều chúng ta mong đợi.
Tương tự, phép trừ có thể được thực hiện theo cách sau:
Sau đây là một ví dụ về phép chia:
Lưu ý rằng lệnh đã đề cập ở trên sẽ chỉ tạo ra kết quả là 3. Trong trường hợp bạn muốn xem phần còn lại, hãy sử dụng toán tử %.
Lý tưởng nhất là thực hiện phép nhân theo cách sau:
Nhưng cách này không hiệu quả, vì * cũng là toán tử shell tích hợp. Do đó, để nó hoạt động giống như toán tử nhân, bạn cần đặt ký tự thoát trước nó theo cách sau:
Xin lưu ý rằng dấu gạch chéo ngược trước pipe được sử dụng làm ký tự thoát vì pipe được coi là toán tử shell tích hợp.
Tương tự như vậy, bạn có thể thực hiện nhiều thao tác. Ảnh chụp màn hình sau - được lấy từ trang hướng dẫn của lệnh - sẽ cung cấp cho bạn ý tưởng hay về loại so sánh nào bạn có thể thực hiện với lệnh expr.
Trong trường hợp chuỗi chứa khoảng trắng, bạn cần sử dụng ký tự thoát.
Tiếp theo, bạn cũng có thể sử dụng expr để trích xuất một chuỗi con trong một chuỗi nhất định. Cú pháp như sau:
expr substr [string] [pos] [length]
Ví dụ, để lấy 'forge' từ 'howtoforge', bạn có thể sử dụng công cụ theo cách sau:
Hơn nữa, bạn cũng có thể sử dụng expr để tìm chỉ mục bắt đầu cho một tập hợp các ký tự trong một chuỗi nhất định. Đây là cú pháp cho lệnh đó
expr index [string] [chars]
Ví dụ, để tìm chỉ mục của 'wt' trong 'howtoforge', hãy sử dụng expr theo cách sau:
Đối với những ai chưa biết, có một tiện ích dòng lệnh - được gọi là expr - cho phép bạn thực hiện tất cả những điều này. Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh này cùng với một số tính năng mà nó cung cấp. Xin lưu ý rằng tất cả các ví dụ và hướng dẫn được đề cập ở đây đều đã được thử nghiệm trên Ubuntu 16.04LTS.
Lệnh expr của Linux
Tài liệu chính thức của công cụ cho biết công cụ này được sử dụng để đánh giá biểu thức. Đây là cú pháp của lệnh expr:
Mã:
expr EXPRESSION
expr OPTION
Câu hỏi 1. Làm thế nào để thực hiện các phép toán số học bằng expr?
Giả sử bạn muốn cộng hai số (ví dụ: 5 và 6), đây là cách bạn có thể thực hiện việc này bằng expr:
Mã:
expr 5 + 6
Vì vậy, bạn có thể thấy tổng '11' được tạo ra trong đầu ra. Xin lưu ý rằng một khoảng trắng duy nhất ở mỗi bên của toán tử ('+' trong trường hợp này) là bắt buộc. Nếu không, lệnh expr sẽ tạo ra kết quả đầu ra sau:
điều này rõ ràng là sai và không phải là điều chúng ta mong đợi.
Tương tự, phép trừ có thể được thực hiện theo cách sau:
Mã:
expr 15 - 6
Mã:
expr 10 / 3
Mã:
expr 10 % 3
Lý tưởng nhất là thực hiện phép nhân theo cách sau:
Mã:
expr 10 * 3
Mã:
expre 10 \* 3
Câu hỏi 2. Làm thế nào để thực hiện các phép toán so sánh bằng expr?
Lệnh expr cũng cho phép bạn thực hiện các phép toán so sánh theo nhiều cách khác nhau. Ví dụ, lệnh sau (thứ ba trong ảnh chụp màn hình bên dưới) sẽ trả về ARG1 nếu nó không phải là null hoặc 0, nếu không thì trả về ARG2.Xin lưu ý rằng dấu gạch chéo ngược trước pipe được sử dụng làm ký tự thoát vì pipe được coi là toán tử shell tích hợp.
Tương tự như vậy, bạn có thể thực hiện nhiều thao tác. Ảnh chụp màn hình sau - được lấy từ trang hướng dẫn của lệnh - sẽ cung cấp cho bạn ý tưởng hay về loại so sánh nào bạn có thể thực hiện với lệnh expr.
Câu hỏi 3. Làm thế nào để thực hiện các thao tác liên quan đến chuỗi bằng expr?
Lệnh expr cũng cho phép bạn thực hiện một số thao tác liên quan đến chuỗi. Ví dụ, để tìm độ dài của một chuỗi, bạn có thể sử dụng công cụ theo cách sau:
Mã:
expr length [string]
Trong trường hợp chuỗi chứa khoảng trắng, bạn cần sử dụng ký tự thoát.
Tiếp theo, bạn cũng có thể sử dụng expr để trích xuất một chuỗi con trong một chuỗi nhất định. Cú pháp như sau:
expr substr [string] [pos] [length]
Ví dụ, để lấy 'forge' từ 'howtoforge', bạn có thể sử dụng công cụ theo cách sau:
Hơn nữa, bạn cũng có thể sử dụng expr để tìm chỉ mục bắt đầu cho một tập hợp các ký tự trong một chuỗi nhất định. Đây là cú pháp cho lệnh đó
expr index [string] [chars]
Ví dụ, để tìm chỉ mục của 'wt' trong 'howtoforge', hãy sử dụng expr theo cách sau: