콘텐츠로 이동

Bash - Script Stub

저는 이전에 일했던 곳에서 다양한 언어를 아는 뛰어난 프로그래머가 있었습니다. 그는 스크립트로 무엇인가를 수행하는 방법에 대한 질문이 있을 때 항상 찾아가는 사람이었습니다. 결국, 그는 스크립트 예제로 채워진 작은 스텁 파일을 만들었는데, 이를 필요에 맞게 편집하여 사용할 수 있었습니다. 나중에는 이러한 루틴에 익숙해져서 스텁을 보지 않아도 될 정도로 능숙해졌지만, 이는 좋은 학습 도구이자 다른 사람들에게 유용할 수 있는 것입니다.

실제 스텁

스텁은 잘 문서화되어 있지만, 이것은 절대적으로 모든 스크립트를 다루는 것은 아닙니다! 추가할 수 있는 루틴이 더 많이 있을 수 있습니다. 귀하가 이 스텁에 잘 맞는 예제가 있다면 언제든지 변경해 추가해 주세요.

#!/bin/sh

# 경로를 내보내면 해당 경로에 있는 명령에 대해 전체 경로를 입력하지 않아도 됩니다. export PATH="$PATH:/bin:/usr/bin:/usr/local/bin"


# 프로그램 디렉토리의 절대 경로를 결정하고 저장합니다.
# 주의! bash에서 ' '은 문자열 자체를 나타내지만 " "은 약간 다릅니다. $, ` `, \는 각각 변수 값을 호출하고 명령을 참조하며 이스케이프 문자를 나타냅니다. # 스크립트와 동일한 디렉토리에 위치합니다. PGM=`basename $0`               # 프로그램 이름
CDIR=`pwd`                  # 프로그램이 실행된 디렉토리 저장

PDIR=`dirname $0`
cd $PDIR
PDIR=`pwd`

# 프로그램이 파일 이름을 인수로 받는 경우 이렇게 하면 처음 위치로 돌아갑니다.
# (상대 경로를 사용하여 파일 참조 작업이 올바르게 작동하도록 필요합니다.) cd $CDIR

# 특정 사용자에 의해 스크립트가 실행되어야 하는 경우 이를 사용합니다. runby="root"
iam=`/usr/bin/id -un`
if [ $iam != "$runby" ]
then
    echo "$PGM : program must be run by user \"$runby\""
    exit
fi

# 누락된 매개변수를 확인합니다.
# 누락된 경우 사용법 메시지를 표시하고 종료합니다. if [ "$1" = "" ]
then
    echo "$PGM : parameter 1 is required"
    echo "Usage: $PGM param-one"
    exit
fi

# 데이터를 입력 받습니다 (이 경우 "Y"가 기본값인 yes/no 응답):

/bin/echo -n "Do you wish to continue? [y/N] "
read yn
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]
then
    echo "Cancelling..."
    exit;
fi

# 스크립트가 한 번에 한 개만 실행되어야 하는 경우 다음 블록을 사용합니다.
# 잠금 파일이 있는지 확인합니다.  없으면 생성합니다.
# 이미 존재하는 경우 오류 메시지를 표시하고 종료합니다. LOCKF="/tmp/${PGM}.lock"
if [ ! -e $LOCKF ]
then
    touch $LOCKF
else
    echo "$PGM: cannot continue -- lock file exists"
    echo
    echo "To continue make sure this program is not already running, then delete the"
    echo "lock file:"
    echo
    echo "    rm -f $LOCKF"
    echo
    echo "Aborting..."
    exit 0
fi

script_list=`ls customer/*`

for script in $script_list
do
    if [ $script != $PGM ]
    then
        echo "./${script}"
    fi
done

# 잠금 파일 제거

rm -f $LOCKF

결론

스크립팅은 시스템 관리자의 친구입니다. 스크립트를 사용하여 특정 작업을 빠르게 처리할 수 있습니다. 이 스텁은 모든 스크립트 루틴을 담고 있는 것은 아니지만, 일반적인 사용 예제를 제공합니다.

Author: Steven Spencer

Contributors: Ezequiel Bruni