Tìm hiểu shell script – P1

Tram Ho

1. Giới thiệu

Shell script là gì

Câu lệnh shell là một chương trình máy tính được thiết kế để chạy hoặc thực thi bởi Unix shell bởi một trình thông dịch theo dòng lệnh.

Tập hợp các câu lệnh shell được viết trong 1 file có đuôi .shShell Scripts, chẳng hạn với nội dung file có tên là first.sh:

  • #!/bin/sh luôn được viết ở dòng đầu tiên của file, không phải comment, mà là khai báo cho trình tương tác shell của hệ điều hành biết được đây là 1 chương trình shell.
  • Trong một số trường hợp để thực thi file first.sh cần phải cấp quyền thực thi nội dung cho nó chmod 755 first.sh (chmod là lệnh của unix)
  • chuỗi"Hello World" chính là đối số, câu lệnh shell echo được dùng để in ra 1 chuỗi truyền vào.

=> Thay vì chạy dòng lệnh shell ngay trên trình terminal(unix) :

=> Ta có thể thực thi các dòng lệnh bên trong của cả 1 file first.sh:

Ưu Điểm

  • Tự động hóa các hoạt động được thực hiện thường xuyên.
  • Chạy chuỗi lệnh dưới dạng một lệnh.
  • Nó có thể được thực thi trong mọi hệ điều hành giống với Unix mà không cần sửa đổi gì.

Nhược điểm

  • Tốc độ thực thi chậm so với bất kỳ ngôn ngữ lập trình nào
  • Một tiến trình mới được khởi chạy cho hầu hết mọi lệnh shell được thực thi.

2. Sử dụng biến

chuỗi truyền vào trong ví dụ trên có thể được thay bởi biến được khai báo:

  • MY_MESSAGE là tên biến tùy bạn đặt, miễn là format VIẾT_HOA kết hợp với gạch dưới
  • Trong khi echo chấp nhận nhiều đối số truyền vào (không cần dùng "), một biến chỉ có thể lưu 1 giá trị chuỗi, do đó cần bao bên trong cặp dấu nháy kép "Hello World".

Cũng có thể tương tác đặt giá trị biến nhập vào từ bàn phím bằng lệnh read:


Một số tham số dòng lệnh hay dùng:

  • $0: Tên của file script.
  • $1 -> $9: Các tham số truyền vào
  • $#: Số lượng của tham số truyền vào
  • $*: Danh sách các tham số được truyền vào
    (các trường hợp $#$* sẽ không bao gồm $0)


Phạm vi sử dụng biến cũng cần được quan tâm:

Biến chưa được khai báo sẽ có giá trị rỗng (vd: myvar2.sh):

=> kết quả là:


Sẽ không thể trực tiếp sử dụng biến khai bao từ bên ngoài file:

Trừ phi sử dụng export


Cũng không thể trực tiếp sử dụng biến bên trong file ở bên ngoài:

=> khi shell script được chạy xong, môi trường của nó sẽ bị phá hủy (có nghĩa là khi gọi biến trong tập lệnh shell ra bên ngoài ví dụ như terminal, biến trong shell đó sẽ là rỗng)

Vì vậy cũng cần sử dụng export MYVAR bên trong file, tuy nhiên ta còn có thể sử dụng .:

sử dụng . ta sẽ không cần export biến ở cả trong và ngoài file
Từ đây bạn có thể hiểu nguyên lý sử dụng biến môi trường trong các file .profile hay .bash_profile


Chia sẻ bài viết ngay

Nguồn bài viết : Viblo