Ở bài trước bạn đã được học cách tạo một chương trình “hello world‘ với Shell Script rồi, vậy thì bài này mình sẽ bàn về một phần cũng rất quan trọng đó là biến và khai báo biến trong shell script.
Biến là một định danh dùng đẻ lưu trữ dữ liệu, nó có thể lưu trữ các loại dữ liệu như dạng số, dạng chuỗi (văn bản), tên thư mục, tên file, thiết bị, hoặc một kiểu dữ liệu bất kì.
Nói rõ hơn thì một biến được xem như là một con trỏ và trỏ đến một ô nhớ lưu trữ dữ liệu. Shell cho phép chúng ta tạo biến, gán giá trị, thậm chí là có thể xóa biến.
1. Đặt tên biến
Cũng như các ngôn ngữ lập trình phổ biến, tên biến bắt buộc phải đặt theo chuẩn mà Shell đưa ra.
Bài viết này được đăng tại [kiso.vn]
Tên biến chỉ chứa các ký tự từ a-z
, các số từ 0-9
và ký tự gạch dưới _
. Bạn có thể dùng chữ in hoa hoặc in thường, tuy nhiên người ta quy ước nên đặt chữ in hoa vì nó là chuẩn chung. Dưới đây là một vài tên biến hợp lệ và không hợp lệ.
NAME _NAME NAME_ NAME01 NAME_01
0_NAME -NAME NAME! YOUR-NAME
Lý do không hợp lệ là các ký tự đặc biệt như như !, $, -,… được đưa vào danh sách các từ khóa dùng trong shell.
2. Gán giá trị cho biến
Để gán giá trị cho biến thì bạn dùng cú pháp sau:
variable_name=variable_value
Ví dụ:
NAME="Nguyen Van Cuong - Kiso.vn"
Như trong ví dụ này mình đã gán giá trị “Nguyen Van Cuong – Kiso.vn” cho biến NAME.
3. Truy xuất giá trị của biến
Hơi khác chút xíu so với lúc khai báo, khi bạn muốn truy xuất đến một biến thì phải dùng ký tự đô la $
đặt trước biến đó. Như ví dụ dưới đây mình đã in ra giá trị của biến NAME.
#!/bin/sh NAME="Nguyen Van Cuong" echo $NAME
Kết quả sẽ in ra chuỗi sau:
Nguyen Van Cuong
4. Biến chỉ đọc (giống hằng số)
Biến chỉ đọc là biến chỉ cho phép đọc, không được phép thay đổi giá trị của biến.
Để thiết lập một biến là chỉ đọc thì ta sử dụng từ khóa readonly.
DOMAIN="kiso.vn" readonly DOMAIN
Nếu bạn cố tình thay đổi giá trị của biến thì lập tức nhận được thông báo lỗi “/bin/sh: DOMAIN: This variable is read only.“.
5. Xóa biến
Nếu một biến không còn tác dụng gì cho chương trình thì bạn nên xóa nó đi bằng cách sử dụng lệnh shell để xóa nó ra khỏi dành sách biến, sau khi xóa xong thì bạn mất hoàn toàn biến đó.
Để xóa biên thì ta dùng hàm unset, cú pháp như sau:
unset variable_name
Vi dụ:
#!/bin/sh NAME="Cuong" unset NAME echo $NAME
Đoạn code này sẽ không in ra giá trị nào cả bởi vì biến NAME
đã bị xóa trước khi dùng lệnh echo
.
Lưu ý: Bạn không thể xóa biến được thiết lập là readonly.
6. Các thể loại biến
Có 3 loại biến như sau:
Local Variables: Biến nội bộ là biến tồn tại trong quá trình thực thi của shell, nó không có sẵn nên ban phải khai báo, đương nhiên chỉ sử dụng được trong phạm vi của chương trình đó mà thôi.
Environment Variables: Biến môi trường là biến có sẵn trong chương trình shell, vì vậy bạn có thể sử dụng nó ở bất kì đâu và bất kì chương trình shell.
Shell Variables: Biến shell là biến đặc biệt được thiết lập bởi shell
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chính1. Đặt tên biến2. Gán giá trị cho biến3....
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chính1. Đặt tên biến2. Gán giá trị cho biến3. Truy xuất giá trị của biến4. Biến chỉ đọc (giống hằng số)5. Xóa biến6. Các thể loại biến1. Khái niệm CSF: CSF (ConfigServer &...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chính1. Đặt tên biến2. Gán giá trị cho biến3. Truy xuất giá trị của biến4. Biến chỉ đọc (giống hằng số)5. Xóa biến6. Các thể loại biếnV. Phân tích và khai thác các...
Directory traversal vulnerabilities (phần 3)
Nội dung chính1. Đặt tên biến2. Gán giá trị cho biến3. Truy xuất giá trị của biến4. Biến chỉ đọc (giống hằng số)5. Xóa biến6. Các thể loại biếnV. Phân tích và khai thác các...
Directory traversal vulnerabilities (phần 2)
Nội dung chính1. Đặt tên biến2. Gán giá trị cho biến3. Truy xuất giá trị của biến4. Biến chỉ đọc (giống hằng số)5. Xóa biến6. Các thể loại biếnIII. Vì sao lỗ hổng Directory traversal...