웹사이트 검색

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


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

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

다음은 내 ~/lib/sh 디렉토리에 있는 libMYFUNCS.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

따라서 아래와 같이 다른 스크립트에서 lib ~/lib/sh/libMYFUNCS.shprintUSERDETS 함수를 사용하게 됩니다.

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

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을 Bash 스크립팅용 IDE로 구성하는 간단한 방법을 설명하겠습니다. 그때까지 항상 TecMint와 연결을 유지하시고 아래 피드백 양식을 통해 이 가이드에 대한 의견을 공유해 주세요.