Giới Thiệu Các Biến Đặc Biệt Trong Linux Bash

Bài viết này sẽ giới thiệu các loại Biến Đặc Biệt Trong Linux Bash. Nếu bạn cần hỗ trợ, xin vui lòng liên hệ VinaHost qua Hotline 1900 6046 ext.3, email về support@vinahost.vn hoặc chat với VinaHost qua livechat https://livechat.vinahost.vn/chat.ph

1. Khái niệm

1.1. Các loại biến

Trong lập trình bash shell, có 2 loại biến cơ bản:

  • Biến (Variables)

Tạo ra bởi user từ command-line hay shell script cho mục đích lưu trữ dữ liệu (string, integer, etc…), cần thiết cho quá trình xử lý của chương trình.

  • Tham số đặc biệt (Special Parameters)

Tham số đặc biết là những tham số được định nghĩa trước trong bash và không thể thay đổi bởi user (read-only)

  • Tham số vị trị (Positional Parameters)

Là các tham số được nhập trong quá trình gọi chương trình. Có thể nhận giá trị từ $1 đến $N với N là số nguyên. Trong trường hợp N có nhiều hơn một ký tự, ta có thể định nghĩa tham số vị trí như sau ${N}.

1.2. Tham số đặc biệt (Special Parameters)

Tham số
(Special Parameter)

Mô tả

$* Tham số chứa toàn bộ các tham số vị trí được nhập.
$@ Tương tự $* chứa toàn bộ các tham số vị trí.
$# Tổng số lượng tham số vị trí được nhập.
$$ Chứa giá trị Process ID (PID) của shell.
$! Chứa giá trị Process ID (PID) của process đã được thực thi ngầm trước đó.
$? Chứa giá trị trạng thái khi kết thúc của lệnh thực thi trước đó.
$- Trả về giá trị options được set trước đó với lệnh set tại shell hiện tại.
$_ Trả về giá trị tham số cuối cùng của lệnh được thực thi trước đó.

 

2. Một số ví dụ

  • Tham số ‘$#’ và ‘$@’.

Ví dụ:

$ cat special-param.sh
echo So luong tham so nhap vao [\$\#]: $#
echo “Danh sach tham so nhap vao:”
for arg in $@; do
    printf ‘”%s”\n’ $arg
done

Kết quả trả về:

$ ./special-param.sh vina host
So luong tham so nhap vao [$#]: 2
Danh sach tham so nhap vao:
“vina”
“host”
    • $# mang giá trị của số lượng tham số nhập vào,
    • $@ là biến chứa toàn bộ giá trị tham số nhập vào.
  • Tham số ‘$$’ và ‘$_’.

Ví dụ:

$ cat special-param.sh
echo “Ten chuong trinh duoc thuc thi [\$_] = $_”
touch /tmp/test.$$
ls -l /tmp/test.$$
cp /tmp/test.$$ /tmp/test.log
echo “Tham so cuoi cung duoc nhap vao [\$_] = $_”

Kết quả trả về:

$ ./special-param.sh vina host
Ten chuong trinh duoc thuc thi [$_] = ./special—param.sh
-rw-rw-r—1 jame jame 0 Dec 18 19:11 /tmp/test.3245
Tham soo cuoi cung duoc nhap vao [$_] = /tmp/test.log
    • $_ khi dùng tại đầu chương trình sẽ trả về tên chương trình thực thi, và khi dùng nơi khác trong script sẽ trả về giá trị cuối cùng của tham số được nhập vào.
    • $$ trả về PID của shell thực thi chương trình hiện tại.
  • Tham số ‘$?’.

Ví dụ:

$ cat special-param.sh
/usr/local/bin/fakeprogram 2> /dev/null
if [ “$?” -ne “0” ]; then
   echo “[*] Loi thuc thi chuong trinh, Hay thu kiem tra lai voi [\$?]”
fi

Kết quả trả về:

$ cat special-param.sh
[*] Loi thuc thi chuong trinh, Hay thu kiem tra lai voi [$?]
    • $? Trả về giá trị trạng thái khi kết thúc của lệnh thực thi trước đó, cụ thể là lệnh /usr/local/bin/fakeprogram 2> /dev/null, do không có chương trình fakeprograme nên giá trị $? Sẽ là 1.
  • Tham số ‘$-’.
$ echo $-
himBH

Trả về giá trị options được set trước đó với lệnh set tại shell hiện tại.

H – histexpand

m – monitor

h – hashall

B – braceexpand

i – interactive

Chúc bạn thực hiện thành công!

THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST

>> SERVER – COLOCATION – CDN

>> CLOUD – VPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

Đánh giá bài viết
Was this article helpful?
Đánh giá
Đánh giá bài viết
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận