Tin tức và phân tích của tất cả các thiết bị di động

Hàm Bash trong Linux & Làm thế nào để sử dụng nó?

Giả sử bạn đang làm việc trên một tập lệnh bash phức tạp để tự động hóa một loạt tác vụ trên hệ thống Linux của mình. Bạn nhận thấy rằng khi nó phát triển, có một số phần nhất định của tập lệnh trong đó các khối mã giống nhau được lặp lại nhiều lần. Để làm điều này, bạn có thể gói phần lặp lại bên trong một khối được gọi là ‘hàm’ và sử dụng lại nó, làm cho mã tổng thể được sắp xếp hợp lý và có tổ chức hơn. Trong bài viết này, chúng ta sẽ thảo luận về hàm trong bash là gì và cách sử dụng nó để tự động hóa các tác vụ Linux.

Hàm Bash trong Linux là gì?

Các hàm Bash là các khối mã có thể tái sử dụng trong một tập lệnh bash có thể được nhóm lại với nhau và được đặt tên để tránh phải viết cùng một mã nhiều lần. Giống như các ngôn ngữ lập trình khác, bạn có tùy chọn sử dụng các hàm trong tập lệnh bash của mình. Các hàm giúp bạn sắp xếp toàn bộ tập lệnh của mình thành các mô-đun nhỏ hơn, giúp mã của bạn dễ đọc hơn, dễ gỡ lỗi và có thể sử dụng lại. Nói cách khác, các hàm giống như một tập lệnh bên trong một tập lệnh.

Làm cách nào để xác định hàm trong Bash?

Bây giờ bạn đã có ý tưởng cơ bản về hàm bash là gì, hãy xem cách xác định chúng để làm cho quy trình làm việc trên Linux của chúng ta dễ dàng hơn nhiều. Cú pháp cơ bản để xác định hàm bash là:

<function_name>(){
    <statements_to_execute>
}

Bạn thậm chí có thể sử dụng phiên bản một dòng của cú pháp trên:

<function_name>() { <statements_to_execute>; }

Một số điểm cần nhớ về việc xác định hàm bash bao gồm:

  • Mọi câu lệnh và lệnh được viết bên trong {} đều được gọi là thân hàm. Đối với tên hàm, bạn có thể sử dụng bất cứ thứ gì ngoại trừ từ khóa là những từ cụ thể dành riêng cho các lệnh khác nhau.
  • Không giống như tập lệnh bash thông thường, các hàm không được thực thi trừ khi bạn gọi chúng. Để thực thi một hàm, bạn cần sử dụng tên hàm.
  • Khi sử dụng phiên bản một dòng, mỗi lệnh bạn viết phải được phân tách bằng dấu chấm phẩy ‘;’.
  • Tất cả các biến được khai báo bên trong hàm chỉ có thể được truy cập bên trong thân hàm.

Hãy xem một ví dụ cơ bản dựa trên cú pháp trên. Bắt đầu bằng cách tạo một tệp mới trong trình soạn thảo văn bản Linux và viết mã này vào trong đó:

#!/bin/bash

hello_world () {
   echo 'hello, world'
}

hello_world

Nên lưu file có cùng tên với tên hàm. Để gọi tệp, chỉ cần viết tên hàm bên trong dấu nhắc shell và nhấn enter.

./hello_world

Cách truyền đối số cho hàm Bash

Đôi khi bạn có thể cần phải làm việc với một số giá trị tùy chỉnh hoặc làm việc với các giá trị đầu vào của người dùng bằng các hàm bạn đã tạo. Để truyền đối số cho hàm bash, chỉ cần đề cập đến chúng sau tên hàm sau khi gọi hàm dưới dạng biến shell Linux. Đối với việc sử dụng các đối số bên trong hàm, hãy đặt chúng với $, như $1$2 bên dưới và vân vân. Ví dụ:

#!/bin/bash

greeting () {
  echo "Hello $1"
}

greeting "Beebom"

Để gọi, sử dụng lệnh sau:

./greeting.sh

Cách trả về giá trị từ hàm Bash

Không giống như các ngôn ngữ lập trình khác, trong bash, bạn không thể trả về giá trị từ hàm. Bạn chỉ có thể gửi trạng thái trả về từ hàm bash tới người gọi với bất kỳ số nào từ 0 đến 255, ở đâu 0 đại diện cho sự thành công và bất kỳ con số nào khác là lỗi/lỗi hệ thống Linux. Ví dụ: sao chép mã này trong trình soạn thảo nano trong Linux.

#!/bin/bash

greeting () {
    echo "Hello $1"
   
 return 10
}

greeting "Beebom"
echo The return value is $?

Khi bạn gọi đoạn script trên, bạn sẽ nhận được kết quả đầu ra tương tự cùng với giá trị 10, cho biết đã xảy ra lỗi hoặc lỗi.

Phạm vi biến trong hàm Bash

Phạm vi của một biến có nghĩa là các phần mã trong đó các biến có thể được sử dụng trong bash. Phạm vi có thể được chia thành hai phần chủ yếu – phạm vi toàn cầu và địa phương. Với phạm vi toàn cục, biến có thể được sử dụng ở mọi nơi kể cả trực tiếp trong dấu nhắc shell. Phạm vi cục bộ có nghĩa là biến không thể được sử dụng bên ngoài khối nơi nó được khai báo.

Mọi biến bạn khai báo bên trong hàm bash với từ khóa “cục bộ” sẽ nằm trong phạm vi cục bộ của thân hàm và không thể được sử dụng bên ngoài thân hàm. Tương tự, các biến toàn cục có thể được truy cập từ bất kỳ đâu trong tập lệnh bash mà không có bất kỳ hạn chế nào. Ví dụ sau đây sẽ làm rõ điều đó:

#!/bin/bash

global_var="I am global"

function display_global() {
    echo "Inside function: $global_var"
    local local_var="I am local"
    echo "Inside function: $local_var"
}

display_global
echo "Outside function: $global_var"
echo "Outside function: $local_var"

Sau khi thực thi đoạn script trên, bạn sẽ thấy kết quả đầu ra sau:

Cách thực hành tốt nhất để sử dụng hàm trong Bash

Hàm Bash là công cụ mạnh mẽ có thể nâng cao cấu trúc, khả năng bảo trì và khả năng sử dụng lại của tập lệnh bash trong Linux. Hãy làm theo các phương pháp hay nhất sau để sử dụng các hàm trong bash có thể cải thiện đáng kể quy trình làm việc của chúng tôi:

  1. Giữ chức năng ngắn gọn và tập trung: Cố gắng giữ cho các chức năng bạn viết ngắn gọn, súc tích và tập trung để thực hiện một nhiệm vụ duy nhất. Điều này sẽ cải thiện khả năng đọc và bảo trì tổng thể của tập lệnh bash.
  2. Sử dụng tên mô tả: Sử dụng tên ngắn gọn nhưng mang tính mô tả phản ánh mục đích của hàm làm tên hàm. Những cái tên rõ ràng và có ý nghĩa giúp mã dễ hiểu hơn, cho phép bạn cũng như các nhà phát triển khác duy trì và xây dựng mã dựa trên đó.
  3. Thêm nhận xét: Không chỉ đối với các tập lệnh bash mà còn đối với tất cả các loại ngôn ngữ lập trình khác nhau mà bạn làm việc, hãy sử dụng các nhận xét mô tả phần nào của mã đang làm gì.
  4. Chức năng tái sử dụng: Sử dụng lại các hàm bất cứ khi nào có thể để tránh phải viết lại cùng một mã.
  5. Tránh xung đột tên hàm: Tránh sử dụng các hàm có cùng tên với các lệnh tích hợp và các công cụ dòng lệnh khác.