ShellScript – Nối Tiếp (P6)

Tram Ho

Chúng ta tiếp tục cùng tìm hiểu những phần tiếp theo của shell script nhé !
🔻 Hàm (Function)

1. Basic

  • Tạo một function khá đơn giản. Ta có thể được viết bằng hai định dạng khác nhau:

▪️ Lưu ý:

  • Cả hai hoạt động như nhau và không có cái nào nhanh hơn cái nào cả.
  • Trong các ngôn ngữ lập trình khác, thông thường có các đối số được truyền cho hàm được liệt kê bên trong ngoặc (). Còn trong Bash, thì ta sẽ viết mà không truyền bất cứ thứ gì vào trong ngoặc.
  • Định nghĩa hàm phải xuất hiện trong tập lệnh trước khi có bất kỳ lệnh nào gọi đến hàm.
  • Ví dụ:

  • Dòng 3: Ta bắt đầu định nghĩa hàm bằng cách đặt tên cho nó.
  • Dòng 4: Trong dấu ngoặc nhọn, ta có thể viết nhiều lệnh chúng ta muốn.
  • Dòng 6, 7: Khi hàm đã được xác định, chúng ta có thể gọi nó bao nhiêu lần tùy thích và nó sẽ thực thi các lệnh đó.

2. Truyền tham số (Passing Argument)

  • Ta thường truyền tham số khi ta muốn xử lý một số dữ liệu từ bên ngoài vào, ta sẽ truyền các tham số ngay sau tên hàm. Ví dụ như:

  • Kết quả trả về:


3. Trả về giá trị (Return value)

  • Như ta đã biết, hầu hết các ngôn ngữ lập trình đều có thể trả về giá trị cho các hàm, việc này được coi như là phương tiện để các hàm gửi dữ liệu trở lại nơi chúng được gọi. Nhưng các hàm shell không cho phép ta làm điều đó. Tuy nhiên, nó cho phép ta return trạng thái trả về. Giống như làm cho một chương trình hay một câu lệnh dừng lại đã thành công hay chưa. Ở đây, ta sử dụng return để chỉ trạng thái trả về. Ví dụ:

  • Dòng 5: Ở đây, là trạng thái trả về của một hàm.
  • Dòng 10: Biến $? Chứa trạng thái trả về của lệnh hoặc hàm đã chạy trước đó.
  • Lưu ý: Thông thường, trạng thái trả về 0 cho biết mọi thứ đã thành công. Giá trị khác 0 cho thấy đã xảy ra lỗi.
  • Kết quả:


Ngoài ra, ta sẽ bổ sung thêm một chút về phạm vi biến và cách ghi đè lệnh

🔻 Phạm vi của biến (Variable Scope)
  • Mặc định thì phạm vi của một biến là global. Điều đó có nghĩa là nó có thể sử dụng ở mọi nơi trong script.
  • Nếu ta tạo một biến local trong một hàm thì nó chỉ có tác dụng trong hàm đó. Cú pháp sẽ như sau:

  • Ví dụ:

  • Kết quả:

🔻 Ghi đè lệnh (Overriding Command)
  • Có thể đặt tên một hàm cùng tên với một lệnh mà ta thường sử dụng. Ví dụ:

  • Kết quả trả về:


Cảm ơn các bạn đã đọc bài viết của mình nhé!
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo