Unix / Linux - Các biến đặc biệt
Trong chương này, chúng ta sẽ thảo luận chi tiết về biến đặc biệt trong Unix. Trong một trong những chương trước của chúng tôi, chúng tôi đã hiểu cách cẩn thận khi chúng tôi sử dụng một số ký tự không và số trong tên biến. Điều này là do những ký tự đó được sử dụng trong tên của các biến Unix đặc biệt. Các biến này được dành riêng cho các chức năng cụ thể.
Ví dụ, $ ký tự đại diện cho số ID quy trình, hoặc PID, của trình bao hiện tại -
$echo $$
Lệnh trên ghi PID của shell hiện tại -
29949
Bảng sau đây cho thấy một số biến đặc biệt mà bạn có thể sử dụng trong các tập lệnh shell của mình:
Sr.No. | Biến & Mô tả |
---|---|
1 | $0 Tên tệp của tập lệnh hiện tại. |
2 | $n Các biến này tương ứng với các đối số mà một tập lệnh đã được gọi. Đâyn là một số thập phân dương tương ứng với vị trí của đối số (đối số đầu tiên là $ 1, đối số thứ hai là $ 2, v.v.). |
3 | $# Số lượng đối số được cung cấp cho một tập lệnh. |
4 | $* Tất cả các đối số được trích dẫn kép. Nếu một tập lệnh nhận được hai đối số, thì $ * tương đương với $ 1 $ 2. |
5 | $@ Tất cả các đối số được trích dẫn kép riêng lẻ. Nếu một tập lệnh nhận được hai đối số, thì $ @ tương đương với $ 1 $ 2. |
6 | $? Trạng thái thoát của lệnh cuối cùng được thực thi. |
7 | $$ Số quá trình của trình bao hiện tại. Đối với các tập lệnh shell, đây là ID tiến trình mà chúng đang thực thi. |
số 8 | $! Số tiến trình của lệnh nền cuối cùng. |
Đối số dòng lệnh
Các đối số dòng lệnh $ 1, $ 2, $ 3, ... $ 9 là các tham số vị trí, với $ 0 trỏ đến lệnh thực, chương trình, tập lệnh shell hoặc hàm và $ 1, $ 2, $ 3, ... $ 9 là các đối số của chỉ huy.
Tập lệnh sau sử dụng các biến đặc biệt khác nhau liên quan đến dòng lệnh:
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
Đây là một mẫu chạy cho tập lệnh trên -
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
Các thông số đặc biệt $ * và $ @
Có các tham số đặc biệt cho phép truy cập tất cả các đối số dòng lệnh cùng một lúc. $* và $@ cả hai sẽ hoạt động giống nhau trừ khi chúng được đặt trong dấu ngoặc kép, "".
Cả hai tham số chỉ định các đối số dòng lệnh. Tuy nhiên, tham số đặc biệt "$ *" nhận toàn bộ danh sách dưới dạng một đối số với khoảng cách giữa và tham số đặc biệt "$ @" nhận toàn bộ danh sách và tách nó thành các đối số riêng biệt.
Chúng ta có thể viết tập lệnh shell như được hiển thị bên dưới để xử lý một số lượng đối số dòng lệnh không xác định với các tham số đặc biệt $ * hoặc $ @ -
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
Đây là một mẫu chạy cho tập lệnh trên -
$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old
Note - Đây do...done là một loại vòng lặp sẽ được đề cập trong phần hướng dẫn tiếp theo.
Trạng thái thoát
Các $? biến đại diện cho trạng thái thoát của lệnh trước đó.
Trạng thái thoát là một giá trị số được trả về bởi mọi lệnh sau khi hoàn thành. Theo quy tắc, hầu hết các lệnh trả về trạng thái thoát 0 nếu chúng thành công và 1 nếu chúng không thành công.
Một số lệnh trả về trạng thái thoát bổ sung vì những lý do cụ thể. Ví dụ: một số lệnh phân biệt giữa các loại lỗi và sẽ trả về các giá trị thoát khác nhau tùy thuộc vào loại lỗi cụ thể.
Sau đây là ví dụ về lệnh thành công:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$