사용자 지정 셸 함수 및 라이브러리를 작성하고 사용하는 방법
Linux에서 셸 스크립트는 특정 시스템 관리 작업을 수행하거나 자동화하고, 간단한 명령 줄 도구를 만드는 등 다양한 방법으로 우리를 도와줍니다.
이 가이드에서는 새로운 Linux 사용자에게 커스텀 셸 스크립트를 안정적으로 저장할 수있는 위치를 보여주고, 커스텀 셸 함수와 라이브러리를 작성하는 방법을 설명하고, 다른 스크립트에서 라이브러리의 함수를 사용하는 방법을 설명합니다.
쉘 스크립트를 저장할 위치
전체/절대 경로를 입력하지 않고 스크립트를 실행하려면/usr/local/bin :/usr/local/sbin :/usr/bin :/opt/cuda/bin의 디렉토리 중 하나에 저장해야합니다. :/opt/cuda/integration/nsight-compute :/opt/cuda/integration/nsight-systems :/usr/lib/jvm/default/bin 환경 변수.
/ usr/local/bin :/usr/local/sbin :/usr/bin :/opt/cuda/bin :/opt/cuda/integration/nsight-compute :/opt/cuda/integration/nsight-systems를 확인하려면 :/usr/lib/jvm/default/bin, 아래 명령을 실행합니다.
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
일반적으로 디렉토리 bin이 사용자 홈 디렉토리에 있으면 자동으로/usr/local/bin :/usr/local/sbin :/usr/bin :/opt/cuda/bin :/opt /에 포함됩니다. "cuda/integration/nsight-compute :/opt/cuda/integration/nsight-systems :/usr/lib/jvm/default/bin. "여기에 쉘 스크립트를 저장할 수 있습니다.
따라서 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.sh의 printUSERDETS 함수를 사용합니다.
특정 사용자의 세부 정보를 인쇄하기 위해이 스크립트에 다른 코드를 작성할 필요가 없습니다. 기존 함수를 호출하기 만하면됩니다.
이름이 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에 연결되어 있고 아래 피드백 양식을 통해이 가이드에 대한 생각을 공유하십시오.