Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

사용자 지정 셸 함수 및 라이브러리를 작성하고 사용하는 방법

Linux에서 셸 스크립트는 특정 시스템 관리 작업을 수행하거나 자동화하고 간단한 명령줄 도구를 만드는 등 다양한 방법으로 우리를 돕습니다.

이 가이드에서는 새로운 Linux 사용자에게 사용자 지정 셸 스크립트를 안정적으로 저장하는 위치, 사용자 지정 셸 함수 및 라이브러리를 작성하는 방법, 다른 스크립트에서 라이브러리의 기능을 사용하는 방법을 보여줍니다.

셸 스크립트 저장 위치

전체/절대 경로를 입력하지 않고 스크립트를 실행하려면 $PATH의 디렉토리 중 하나에 저장해야 합니다. 환경 변수.

$PATH를 확인하려면 , 아래 명령을 실행합니다.

$ echo $PATH

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

일반적으로 bin 디렉토리가 사용자 홈 디렉토리에 존재하는 경우 자동으로 사용자의 $PATH에 포함됩니다. . 여기에 쉘 스크립트를 저장할 수 있습니다.

따라서 bin 디렉토리(Perl도 저장할 수 있음) , Awk 또는 Python 스크립트 또는 기타 프로그램):

$ mkdir ~/bin

다음으로 lib라는 디렉터리를 만듭니다. (라이브러리의 약자) 자신의 라이브러리를 보관할 곳입니다. C, Python 등과 같은 다른 언어에 대한 라이브러리를 보관할 수도 있습니다. 그 아래에 sh라는 다른 디렉토리를 만듭니다.; 이것은 특히 쉘 라이브러리를 저장합니다:

$ mkdir -p ~/lib/sh 

자신만의 셸 함수 및 라이브러리 만들기

쉘 함수 스크립트에서 특별한 작업을 수행하는 명령 그룹입니다. 다른 프로그래밍 언어의 절차, 서브루틴 및 함수와 유사하게 작동합니다.

함수를 작성하는 구문은 다음과 같습니다.

function_name() { list of commands }

예를 들어 스크립트에 날짜를 표시하는 함수를 작성할 수 있습니다. 다음과 같이:

showDATE() {date;}

날짜를 표시하고 싶을 때마다 , 이름을 사용하여 위의 함수를 호출하기만 하면 됩니다.

$ showDATE

쉘 라이브러리 는 단순히 셸 스크립트이지만 나중에 다른 셸 스크립트에서 호출할 수 있는 함수만 저장하도록 라이브러리를 작성할 수 있습니다.

다음은 libMYFUNCS.sh라는 라이브러리의 예입니다. 내 ~/lib/sh에서 더 많은 기능 예제가 있는 디렉토리:

#!/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
}

파일을 저장하고 스크립트를 실행 가능하게 만드십시오.

라이브러리에서 함수를 호출하는 방법

lib에서 함수를 사용하려면 , 먼저 lib를 포함해야 합니다. 함수가 사용될 쉘 스크립트에서 아래 형식으로:

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

따라서 printUSERDETS 기능을 사용합니다. 라이브러리 ~/lib/sh/libMYFUNCS.sh에서 아래와 같이 다른 스크립트에서.

특정 사용자의 세부 정보를 인쇄하기 위해 이 스크립트에 다른 코드를 작성할 필요가 없습니다. 기존 함수를 호출하기만 하면 됩니다.

이름이 test.sh인 새 파일을 엽니다. :

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

저장하고 스크립트를 실행 가능하게 만들고 실행하십시오:

$ chmod 755 test.sh
$ ./test.sh 
사용자 지정 셸 함수 및 라이브러리를 작성하고 사용하는 방법

이 기사에서는 쉘 스크립트를 안정적으로 저장하는 위치, 고유한 쉘 함수 및 라이브러리를 작성하는 방법, 일반 쉘 스크립트의 라이브러리에서 함수를 호출하는 방법을 보여주었습니다.

다음으로 Vim을 구성하는 간단한 방법을 설명합니다. IDE로 Bash 스크립팅용. 그때까지 항상 TecMint에 연결하고 아래 피드백 양식을 통해 이 가이드에 대한 생각을 공유하세요.