Các biến đặc biệt trong Unix/Linux




Chương hướng dẫn trước đã cảnh báo về sử dụng các ký tự đặc biệt trong tên biến của bạn. Điều này bởi vì những ký tự này được sử dụng trong tên các biến đặc biệt trong Unix. Những biến này được giữ cho các chức năng đặc biệt.

Ví dụ, ký tự $ đại diện cho số Process ID, hoặc PID của shell hiện tại.

$echo $$

Lệnh trên sẽ viết Process ID của shell hiện tại:

29949

Dưới đây là bảng liệt kê các biến đặc biệt mà bạn có thể sử dụng trong Shell script:

Biến Miêu tả
$0Tên file của script hiện tại.
$nNhững biến này tương ứng với các tham số mà một script được gọi. Tại đây n là số thập phân nguyên dương tương ứng với vị trí của một tham số (tham số đầu tiên là $1, tham số thứ hai là $2…).
$#Số các tham số cung cấp cho một script.
$*Tất cả các tham số được trích dẫn kép. Nếu một script nhận hai tham số, $* là tương đương với $1 $2.
$@Tất cả các tham số được trích dẫn kép riêng rẽ. Nếu một script nhận 2 tham số, $@ là tương đương với $1 $2.
$?Trạng thái thoát ra của lệnh trước được chạy.
$$Số tiến trình của shell hiện tại. Đối với Shell script, đây là số Process ID mà chúng đang chạy.
$!Số tiến trình của lệnh background trước.

Các tham số dòng lệnh (command-line) trong Unix/Linux

Các biến dòng lệnh $1, $2, $3, …, $9 là các tham số vị trí, với $0 chỉ tới lệnh, chương trình, Shell script hoặc chức năng thực sự và $1, $2, $3, …, $9 là các tham số của lệnh đó.

Script dưới đây sử dụng các biến đặc biệt liên quan tới 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 : $#"

Tại đây là một lần chạy mẫu cho script 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 tham số đặc biệt $* và $@ trong Unix/Linux

Có những tham số đặc biệt mà cho phép truy cập và tất cả các tham số của các dòng lệnh cùng một lúc. Cả $* và $@ sẽ hoạt động tương tự trừ khi chúng được bao quanh bởi trích dẫn ("").

Cả hai tham số xác định tất cả các tham số của dòng lệnh, nhưng $* nhận toàn bộ danh sách làm tham số với các khoảng cách trống ở giữa và $@ nhận toàn bộ danh sách làm tham số và phân biệt chúng thành các tham số riêng rẽ.

Chúng ta có thể viết Shell script như dưới để xử lý một số không biết các tham số dòng lệnh với hoặc tham số đặc biệt $* hoặc $@.

#!/bin/sh

for TOKEN in $*
do
   echo $TOKEN
done

Chúng ta chạy mẫu cho script trên:

$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old

Ghi chú: Tại đây do...done là một dạng của loop mà chúng ta sẽ bàn luận trong chương hướng dẫn sau.

Trạng thái thoát (Exit) trong Unix/Linux

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ố trả về bởi mỗi lệnh khi nó hoàn tất. Theo quy định, hầu hết các lệnh trả về một trạng thái thoát là 0 nếu chúng thực hiện thành công và 1 nếu chúng không thành công.

Một vài lệnh trả về các trạng thái thoát với phần thêm vào khác vì các lý do riêng. 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 đa dạng phụ thuộc vào kiểu của lỗi.

Dưới đây là các ví dụ về lệnh thực hiện 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
$

Loạt bài hướng dẫn học UNIX cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Follow https://www.facebook.com/vietjackteam/ để 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: