Biến đặc biệt (Special Variables) trong Shell Script

Ở bài trước mình có đề cập đến biến đặc biệt (special variable) được thiết lập bởi SEO nhưng chưa giải thích rõ về nó, vậy thì trong bài này chúng ta cùng tìm hiểu thể loại biến này nhé.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Special variables là gì?

Special variables là biến được sinh ra bởi shell, giá trị của nó sẽ được cấp phát dựa vào dữ liệu đầu vào của chương trình shell, hoặc dữ liệu của chính hệ thống Linux.

Ví dụ để xem ID của chương trình shell hiện tại thì bạn sẽ dùng biến có tên là $, và để lấy giá trị của một biến thì ta phải ký tự $ phía trước nữa nên chương trình sẽ như sau:

Bài viết này được đăng tại [free tuts .net]

echo $$

Dưới đây là bảng danh sách các loại biến mà bạn có thể sử dụng trong shell script.

Biến Mô tả
$0 Lấy tên file hiện tại
$n Tập tham số truyền vào script, tham số đầu tiên là $1, tham số hú hai là $2, .... tham số thú n là $n
$# Tổng các tham số truyền vào 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 của lệnh cuối cùng, chúng ta có hai trạng thái đó là 0 => thành công và 1 => thất bại.
$$ ID của lệnh shell đang chạy
$! ID của lệnh shell trước

Ví dụ: Bạn tạo một file tên là special_var.sh, sau đó nhập chương trình script dưới đây.

echo "Ten file: $0"
echo "Tham so dau tien: $1"
echo "Tham so thu hai: $2"
echo "Quoted : $@"
echo "Quoted : $*"
echo "Tong tham so la: $#"

Bạn chạy lệnh sh special.sh Van Cuong thì kết quả sẽ như hình dưới đây.

chay file sh png

Tạm thời bạn bỏ qua phần tham số truyền vào nhé (tham số chính là Van Cuong), phần này mình sẽ giới thiệu ở bài tiếp theo.

2. Hiểu rõ hơn về tham số $* và $@

Trong danh sách trên có hai tham số có cách sử dụng rất giống nhau đó là $*$@, cả hai tham số cho phép truy cập tất cả các đối số cùng một lúc, về nguyên tắc thì hoạt động như nhau, tuy nhiên nếu các tham số có kèm dấu ngoặc kép thì hoạt động sẽ khác nhau.

Cả hai tham số đều xác định đối số của dòng lệnh, tuy nhiên tham số $* sẽ lấy toàn bộ danh sách dựa vào khoảng trắng của đối số truyền vào, còn $@ lấy toàn bộ danh sách và phân tách nó thành các đối số riêng biệt dựa vào khoảng trắng và kèm theo cặp nháy kép.

Giả sử bạn chạy lệnh sh special.sh Nguyễn "Văn Cường", lúc này ta sẽ có các trường hợp sử dụng sau:

Trường hợp $*

Chương trình
for VALUE in $*
do
echo $VALUE
done

for VALUE in "$*"
do
echo $VALUE
done

Kết quả:

Nguyễn
Văn
Cường

Nguyễn
Văn 
Cường

Trường hợp $@

Chương trình
for VALUE in $@
do
echo $VALUE
done

for VALUE in "$@"
do
echo $VALUE
done

Kết quả:

Nguyễn
Văn
Cường

Nguyễn
Văn Cường

Dựa vào kết quả này ta rất dễ thấy sự khác biệt trong đó.

3. Lời kết

Như vậy special variable rất quan trọng phải không các bạn, nhất là việc xử lý tham số truyền vào chương trình shell.

Trong bài có sử dụng một số kiến thức chưa được học, vì vậy nếu bạn không hiểu thị tạm thời có thể bỏ qua, ở các bài sau học xong bạn quay lại sẽ thấy chúng rất dễ hiểu.

Cùng chuyên mục:

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Top