Trình thay thế Shell
Trình thay thế (Substitution) trong Unix/Linux là gì?
Shell thực hiện phép thế khi nó gặp một biểu thức mà chứa một hoặc nhiều ký tự đặc biệt.
Ví dụ:
Dưới đây là ví dụ, trong khi in một giá trị của biến, nó sẽ được thay thế bởi giá trị của biến. Cùng thời gian đó "\n" được thay thế bởi dòng mới.
#!/bin/sh a=10 echo -e "Value of a is $a \n"
Nó sẽ tạo kết quả như dưới đây. Tại đây, chức năng -e sẽ cho phép biên dịch dãy thoát dấu chéo ngược.
Value of a is 10
Nếu không có chức năng -e thì nó tạo ra kết quả sau:
Value of a is 10\n
Dưới đây là các dãy thoát mà có thể được sử dụng bởi lệnh echo:
Dãy thoát | Miêu tả |
---|---|
\\ | Dấu chéo ngược |
\a | Dấu hiệu cảnh báo (BEL) |
\b | Phím lùi (backspace) |
\c | Gạch chéo xuống dòng |
\f | form feed |
\n | Dòng mới |
\r | Quay trở lại |
\t | Tab ngang |
\v | Tab dọc |
Bạn có thể sử dụng chức năng -E để không cho phép biên dịch dấu ngoặc chéo (mặc định).
Bạn có thể sử dụng chức năng -n để không cho phép chèn của dòng mới.
Trình thay thế lệnh (Command Substitution) trong Unix/Linux
Trình thay thế lệnh là một kỹ thuật mà bởi nó Shell thực hiện một tập hợp các lệnh đã cung cấp và sau đó thay thế vị trí kết quả của các lệnh.
Cú pháp
Trình thay thế lệnh được thực hiện khi một lệnh được cung cấp như sau:
`command`
Khi thực hiện trình thay thế lệnh, đảm bảo rằng bạn đang sử dụng 2 dấu trích dẫn đơn kiểu (`), chứ không phải là "".
Ví dụ
Trình thay thế lệnh thông thường được sử dụng để gán đầu ra của một lệnh tới một biến. Mỗi một ví dụ sau giải thích cách sử dụng trình thay thế lệnh.
#!/bin/sh DATE=`date` echo "Date is $DATE" USERS=`who | wc -l` echo "Logged in user are $USERS" UP=`date ; uptime` echo "Uptime is $UP"
Nó sẽ tạo ra kết quả sau:
Date is Thu Jul 2 03:59:57 MST 2009 Logged in user are 1 Uptime is Thu Jul 2 03:59:57 MST 2009 03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
Trình thay thế biến (Variable Substitution) trong Unix/Linux
Sự thay thế biến cho phép người lập trình Shell thao tác giá trị của biến dựa trên trạng thái của nó.
Dưới đây là bảng cho tất cả các trình thay thế có thể:
Mẫu | Miêu tả |
---|---|
${var} | Thay thế giá trị của var. |
${var:-word} | Nếu var là null hoặc unset, thì word được thay thế cho var. Giá trị của var không thay đổi. |
${var:=word} | Nếu var là null hoặc unset, var được thiết lập là giá trị của word . |
${var:?message} | Nếu var là null hoặc unset, message được in là lỗi. Lệnh này kiểm tra xem các biến có được thiết lập đúng không. |
${var:+word} | Nếu var được thiết lập, word được thay thế cho var. Giá trị của var không thay đổi. |
Ví dụ:
Dưới đây là ví dụ minh họa các trạng thái đa dạng của trình thay thế trên:
#!/bin/sh echo ${var:-"Variable is not set"} echo "1 - Value of var is ${var}" echo ${var:="Variable is not set"} echo "2 - Value of var is ${var}" unset var echo ${var:+"This is default value"} echo "3 - Value of var is $var" var="Prefix" echo ${var:+"This is default value"} echo "4 - Value of var is $var" echo ${var:?"Print this message"} echo "5 - Value of var is ${var}"
Nó sẽ tạo ra kết quả sau:
Variable is not set 1 - Value of var is Variable is not set 2 - Value of var is Variable is not set 3 - Value of var is This is default value 4 - Value of var is Prefix Prefix 5 - Value of var is Prefix
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học UNIX phổ biến khác tại VietJack:
- Quản lý File
- Thư mục
- Quyền truy cập File
- Cài đặt Unix/Linux
- Các tiện ích cơ bản
- Các Pipe & Bộ lọc (Filter)