- Chuyên mục khác :
- Git cơ bản và nâng cao
- ·
- MySQL cơ bản và nâng cao
- ·
- MongoDB cơ bản và nâng cao
- ·
- SQL cơ bản và nâng cao
- ·
- Linux cơ bản và nâng cao
- Học Unix/Linux cơ bản
- Học Unix/Linux cơ bản và nâng cao
- Unix/Linux là gì ?
- Quản lý File trong Unix/Linux
- Quản lý thư mục trong Unix/Linux
- Quyền hạn/Chế độ truy cập file trong Unix
- Hướng dẫn cài đặt Unix/Linux
- Các tiện ích cơ bản: in, email trong Unix
- Filter và Pipe trong Unix/Linux
- Quản lý tiến trình trong Unix/Linux
- Các tiện ích giao tiếp mạng trong Unix/Linux
- Trình soạn thảo vi trong Unix/Linux
- Chương trình Unix Shell
- Shell là gì?
- Sử dụng các biến trong Shell
- Các biến đặc biệt trong Unix/Linux
- Sử dụng mảng trong Shell
- Các toán tử Shell cơ bản
- Điều khiển luồng trong Shell
- Vòng lặp trong Unix/Linux
- Điều khiển vòng lặp trong Unix/Linux
- Trình thay thế Shell
- Các kỹ thuật trích dẫn trong Unix/Linux
- Điều hướng IO trong Unix/Linux
- Các hàm Shell
- ManPage Help trong Unix
- Hoạt động nâng cao trong Unix/Linux
- Regular Expression trong Unix/Linux
- Cơ bản về hệ thống File trong Unix/Linux
- Quản lý người dùng trong Unix/Linux
- Hiệu năng hệ thống trong Unix/Linux
- Hệ thống ghi log trong Unix/Linux
- Signal và Trap trong Unix/Linux
- Tài liệu Unix tham khảo
- Các lệnh hữu ích trong Unix/Linux
- Hàm toán học có sẵn trong Shell
- Tài liệu tham khảo Unix/Linux
Các hàm cho phép bạn tinh giản một tính năng tổng thể của một script vào một phần nhỏ và logic hơn mà có thể thực hiện cùng một chức năng bất cứ khi nào nó được cần thông qua việc gọi hàm.
Sử dụng các hàm để thực hiện các công việc mang tính lặp là một cách thông minh để tạo tính sử dụng lại được của code. Tính sử dụng lại của code là một phần quan trọng của các quy tắc chương trình hướng đối tượng hiện đại.
Các hàm Shell là tương tự như các chương trình con, phương thức và các hàm của các chương trình khác.
Tạo các hàm trong Unix/Linux
Để công bố một hàm, đơn giản bạn sử dụng cú pháp sau:
function_name () { list of commands }
Tên hàm của bạn là function_name, và nó là những gì mà bạn sẽ sử dụng để gọi nó từ bất cứ đâu trong script của bạn. Tên hàm phải được theo sau bởi dấu ngoặc đơn, mà được theo sau bởi một danh sách các lệnh bao quanh trong dấu ngoặc ôm ({}).
Ví dụ:
Sau đây là ví dụ đơn giản của việc sử dụng hàm:
#!/bin/sh # Define your function here Hello () { echo "Hello World" } # Invoke your function Hello
Khi bạn chạy script trên, nó sẽ tạo ra kết quả sau:
$./test.sh Hello World $
Truyền các tham số cho một hàm trong Unix/Linux
Bạn có thể định nghĩa một hàm mà sẽ nhận các tham số trong khi gọi các hàm đó. Những tham số này sẽ có thể được đại diện bởi $1, $2 và ….
Dưới đây là ví dụ mà chúng ta truyền hai tham số Zara và Ali và sau đó chúng ta bắt và in các tham số này trong hàm.
#!/bin/sh # Define your function here Hello () { echo "Hello World $1 $2" } # Invoke your function Hello Zara Ali
Code này sẽ tạo ra kết quả sau:
$./test.sh Hello World Zara Ali $
Trả lại các giá trị từ một hàm trong Unix/Linux
Nếu bạn chạy một lệnh exit từ bên trong một hàm, hiệu quả của nó là không chỉ kết thúc sự vận hành của hàm mà còn của chương trình Shell.
Nếu bạn thay cho muốn kết thúc sự vận hành của hàm, thì có cách để thoát khỏi một hàm đã định nghĩa.
Dựa trên tình huống bạn có thể trả lại bất cứ giá trị nào từ hàm của bạn bằng cách sử dụng lệnh return mà có cú pháp như sau:
return code
Ở đây code có thể là bất cứ cái gì mà bạn chọn, nhưng rõ ràng là bạn nên chọn một cái gì đó mà có nghĩa hoặc hữu ích trong bối cảnh tổng thể script của bạn.
Ví dụ:
Hàm dưới đây trả lại giá trị 1.
#!/bin/sh # Define your function here Hello () { echo "Hello World $1 $2" return 10 } # Invoke your function Hello Zara Ali # Capture value returnd by last command ret=$? echo "Return value is $ret"
Code trên tạo ra kết quả sau:
$./test.sh Hello World Zara Ali Return value is 10 $
Các hàm được lồng vào nhau trong Unix/Linux
Một trong những đặc điểm đáng quan tâm của các hàm là chúng có thể là chúng có thể gọi chính hàm đó hoặc gọi các hàm khác. Một hàm có thể gọi chính nó được biết đến như hàm đệ quy.
Dưới đây là ví dụ giải thích sự lồng vào nhau của hai hàm.
#!/bin/sh # Calling one function from another number_one () { echo "This is the first function speaking..." number_two } number_two () { echo "This is now the second function speaking..." } # Calling function one. number_one
Nó sẽ tạo ra kết quả sau:
This is the first function speaking... This is now the second function speaking...
Gọi hàm từ dòng nhắc lệnh trong Unix/Linux
Bạn có thể đặt định nghĩa của các hàm thường được sử dụng bên trong một .profile của bạn để mà chúng có sẵn mỗi khi bạn đăng nhập và bạn có thể sử dụng chúng bất cứ khi nào tại dòng nhắc lệnh.
Bạn cũng có thể chọn cách tạo nhóm các định nghĩa hàm này vào trong một file, gọi là test.sh, và sau đó chạy file trên Shell hiện tại bằng cách gõ từ bàn phím.
$. test.sh
Điều này có thể thực hiện được khi các hàm trong file này có thể cho phép đọc và nó được xác định trong Shell hiện tại như sau:
$ number_one This is the first function speaking... This is now the second function speaking... $
Để gỡ bỏ một định nghĩa hàm từ Shell hiện tại, bạn có thể sử dụng lệnh unset với chức năng .f. Nó giống với lệnh mà bạn sử dụng để gỡ bỏ định nghĩa một biến từ Shell.
$unset .f function_name
Các bài học UNIX phổ biến khác tại s2sontech:
- Quản lý File
- Thư mục
- Quyền truy cập File
- Cài đặt Unix/Linux
- Các tiện ích cơ bản
- Các Pipe & Bộ lọc (Filter)
Bình luận (0)