Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách viết và sử dụng các hàm và thư viện tùy chỉnh của Shell

Trong Linux, các tập lệnh shell giúp chúng ta theo nhiều cách khác nhau, bao gồm thực hiện hoặc thậm chí tự động hóa các tác vụ quản trị hệ thống nhất định, tạo các công cụ dòng lệnh đơn giản và nhiều hơn nữa.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho người dùng Linux mới nơi lưu trữ các tập lệnh shell tùy chỉnh một cách đáng tin cậy, giải thích cách viết các hàm và thư viện shell tùy chỉnh, sử dụng các hàm từ thư viện trong các tập lệnh khác.

Nơi lưu trữ tập lệnh Shell

Để chạy các tập lệnh của bạn mà không cần nhập đường dẫn đầy đủ / tuyệt đối, chúng phải được lưu trữ trong một trong các thư mục trong $ PATH biến môi trường.

Để kiểm tra $ PATH của bạn , đưa ra lệnh bên dưới:

$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Thông thường, nếu thư mục bin tồn tại trong thư mục chính của người dùng, nó tự động được đưa vào $ PATH của họ . Bạn có thể lưu trữ các tập lệnh shell của mình tại đây.

Do đó, hãy tạo bin thư mục (cũng có thể lưu trữ Perl , Awk hoặc Python script hoặc bất kỳ chương trình nào khác):

$ mkdir ~/bin

Tiếp theo, tạo một thư mục có tên lib (viết tắt của thư viện) nơi bạn sẽ lưu giữ các thư viện của riêng mình. Bạn cũng có thể giữ các thư viện cho các ngôn ngữ khác như C, Python, v.v. trong đó. Trong đó, tạo một thư mục khác có tên sh ; điều này sẽ đặc biệt lưu trữ cho bạn các thư viện shell:

$ mkdir -p ~/lib/sh 

Tạo các chức năng và thư viện Shell của riêng bạn

A hàm shell là một nhóm lệnh thực hiện một nhiệm vụ đặc biệt trong một tập lệnh. Chúng hoạt động tương tự như các thủ tục, chương trình con và hàm trong các ngôn ngữ lập trình khác.

Cú pháp để viết một hàm là:

function_name() { list of commands }

Ví dụ:bạn có thể viết một hàm trong tập lệnh để hiển thị ngày như sau:

showDATE() {date;}

Mỗi khi bạn muốn hiển thị ngày , chỉ cần gọi hàm ở trên bằng cách sử dụng tên của nó:

$ showDATE

Một thư viện shell chỉ đơn giản là một tập lệnh shell, tuy nhiên, bạn có thể viết một thư viện để chỉ lưu trữ các hàm của mình mà sau này bạn có thể gọi từ các tập lệnh shell khác.

Dưới đây là ví dụ về thư viện có tên libMYFUNCS.sh trong ~ / lib / sh của tôi thư mục với nhiều ví dụ hơn về các chức năng:

#!/bin/bash 

#Function to clearly list directories in PATH 
showPATH() { 
        oldifs="$IFS"   #store old internal field separator
        IFS=:              #specify a new internal field separator
        for DIR in $PATH ;  do echo $DIR ;  done
        IFS="$oldifs"    #restore old internal field separator
}

#Function to show logged user
showUSERS() {
        echo -e “Below are the user logged on the system:\n”
        w
}

#Print a user’s details 
printUSERDETS() {
        oldifs="$IFS"    #store old internal field separator
        IFS=:                 #specify a new internal field separator
        read -p "Enter user name to be searched:" uname   #read username
        echo ""
       #read and store from a here string values into variables using : as  a  field delimiter
    read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep   "^$uname")"
       #print out captured values
        echo  -e "Username is            : $username\n"
        echo  -e "User's ID                 : $uid\n"
        echo  -e "User's GID              : $gid\n"
        echo  -e "User's Comments    : $comments\n"
        echo  -e "User's Home Dir     : $homedir\n"
        echo  -e "User's Shell             : $shell\n"
        IFS="$oldifs"         #store old internal field separator
}

Lưu tệp và làm cho tập lệnh có thể thực thi được.

Cách gọi hàm từ thư viện

Để sử dụng một hàm trong lib , trước hết bạn cần phải bao gồm lib trong tập lệnh shell nơi hàm sẽ được sử dụng, ở dạng bên dưới:

$ ./path/to/lib
OR
$ source /path/to/lib

Vì vậy, bạn sẽ sử dụng hàm printUSERDETS từ lib ~ / lib / sh / libMYFUNCS.sh trong một tập lệnh khác như được hiển thị bên dưới.

Bạn không phải viết mã khác trong tập lệnh này để in chi tiết của một người dùng cụ thể, chỉ cần gọi một hàm hiện có.

Mở tệp mới có tên test.sh :

#!/bin/bash 

#include lib
.  ~/lib/sh/libMYFUNCS.sh

#use function from lib
printUSERDETS

#exit script
exit 0

Lưu nó, sau đó làm cho tập lệnh có thể thực thi và chạy nó:

$ chmod 755 test.sh
$ ./test.sh 
Cách viết và sử dụng các hàm và thư viện tùy chỉnh của Shell

Trong bài viết này, chúng tôi đã chỉ cho bạn nơi lưu trữ các tập lệnh shell một cách đáng tin cậy, cách viết các hàm và thư viện shell của riêng bạn, gọi các hàm từ các thư viện trong các tập lệnh shell thông thường.

Tiếp theo, chúng tôi sẽ giải thích một cách đơn giản về cách định cấu hình Vim dưới dạng IDE cho kịch bản Bash. Cho đến lúc đó, hãy luôn kết nối với TecMint và cũng chia sẻ suy nghĩ của bạn về hướng dẫn này qua biểu mẫu phản hồi bên dưới.