BLOG ARTICLE Program/Shell-Script | 2 ARTICLE FOUND

  1. 2014.08.20 Shell Script (기초)
  2. 2012.05.01 Bash-Shell Scripting 초간단 기초 예제


[실행]
- 실행 퍼미션 설정 : #chmod +x [Shell 파일]

- Script 실행 : #./[파일이름] 또는 #sh [파일이름]


[Shell 정보 입력]
- Script 작성시 첫 라인 표기
  Bash 쉘 : #!/bin/bash
  korn 쉘 : #!/bin/ksh
  tcsh 쉘 : #!/bin/tcsh

 

[ 아규먼트 변수 ]

- 특별한 내장변수로 위치 매개변수로 사용한다.

- 매개변수를 불러올때 스크립트의 명령행 인자로 사용한다.

option
- $0 : 실행된 쉘 스크립트 이름
- $1 : 스크립트에 넘겨진 첫번째 아규먼트
- $2 : 스크립트에 넘겨진 두번째 아규먼트
- $# : 스크립트에 넘겨진 아규먼트의 개수
- $$ : 쉘스크립트의 프로세스ID
- $? : "[ '$?' 종료코드 ]" 참조

- $* : 스크립트에 전달된 인자 전체를 하나의 변수에 저장하며 IFS환경변수의 첫번째 문자로 구분
- $@ : $*와 동일 (다른점은 IFS환경변수를 사용하지 않음)
 

[ '$?' 종료코드 ]
- 0 (성공) , 1 ~ 125 (에러) , 126 (파일이 실행가능하지 않음) , 128 ~ 255 (시그널 발생)

 

예)

#vi argument.sh                            
------------------------------------------------------------------------------------------------------------------
#!/bin/bash                                          

  echo "This script file $0"
  echo "Argument Count is $#"
  echo "Process ID is $$"
  echo "Argument List \$* : $*"
  echo "Argument List \$@ : $@"
  echo "Argument 1 : $1"
  echo "Argument 1 : $2"
  echo "Argument 1 : $3"
  echo "This script code $?"
------------------------------------------------------------------------------------------------------------------

#./argument.sh a b c

-  This script file ./argument.sh
-  Argument Count is 3
-  Process ID is 31779
-  Argument List  $* : a b c
-  Argument List $@ : a b c
-  Argument 1 : a
-  Argument 2 : b
-  Argument 3 : c
-  This script code 0

 

[산술비교]
- [ $A -eq $B ] : A와 B가 같으면 참 (Equal)
- [ $A -ne $B ] : A와 B가 같지 않으면 참 (Not Equal)
- [ $A -gt $B ] : A가 B보다 크면 참 (Greater Then)
- [ $A -ge $B ] : A가 B보다 크거나 같으면 참 (Greater Equal)
- [ $A -lt $B ] : A가 B보다 작으면 참 (Less Then)
- [ $A-le $B ] : A가 B보다 작거나 같으면 참 (Less Equal)

- [ ! $A ] : A가 참이면 거짓, 거짓이면 참
- [ $A -a $B ] : $A AND $B의 결과, 둘 다 참이면 참
- [ $A -o $B ] : $A OR $B의 결과 , 둘 중 하나만 참이면 참

 
[문자열비교]
- [ string ] : string 이 빈 문자열이 아니면 참
- [ string1 = string2 ] : 두 문자열이 같으면 참
- [ srting1 != string2 ] : 두 문자열이 다르면 참
- [ -n string ] : 문자열이 null (빈문자열)이 아니면 참
- [ -z string ] : 문자열이 null (빈문자열)이면 참
 

[파일조건]
- [ -b FILE ] : FILE 이 블럭디바이스이면 참
- [ -c FILE ] : FILE 이 문자디바이스이면 참
- [ -d FILE ] : FILE 이 디렉토리이면 참
- [ -e FILE ] : FILE 이 존재하면 참
- [ -f FILE ] : FILE 이 존재하고 크기가 0보다 크면 참
- [ -g FILE ] : FILE 이 SGID 가 있으면 참
- [ -u FILE ] : FILE 에 SUID 가 있으면 참
- [ -k FILE ] : FILE 에 Sticky bit 가 있으면 참
- [ -L FILE ] : FILE 이 심볼릭링크이면 참
- [ -S FILE ] : 소켓디바이스이면 참
- [ -r FILE ] : 현재 사용자가 읽을 수 있는 파일이면 참
- [ -s FILE ] : 파일이 비어있지 않으면 참
- [ -t FD ] : FD (File Descriptor)가 열려진 터미널이면 참
- [ -w FILE ] : 현재 사용자가 쓸 수 있는 파일이면 (Writable file) 참
- [ -x FILE ] : 현재 사용자가 실행할 수 있는 파일이면  (Excute file) 참
- [ -O FILE ] : FILE 의 소유자가 현재 사용자이면 참
- [ -G FILE ] : FILE 의 그룹이 현재 사용자의 그룹과 같으면 참
- [ FILE1 -nt FILE2 ] : FILE1 이 FILE2 보다 새로운 파일 (최근의 파일)이면 참
- [ FILE1 -ot FILE2 ] : FILE1 이 FILE2 보다 오래된 파일이면 참
- [ FILE1 -ef FILE2 ] : FILE1 이 FILE2 의 하드링크, 즉 I-node 값이 같으면 참

'Program > Shell-Script' 카테고리의 다른 글

Bash-Shell Scripting 초간단 기초 예제  (0) 2012.05.01
AND

[ main.sh ]

pwd : /backup/shell

#vi ./main.sh

===================================================================================================

#!/bin/bash
clear
echo "=================================="
echo " 1. 사용자 관련"
echo " 2. 권한 관련"
echo " 3. 하드웨어 관련"
echo " 4. 검색 관련"
echo " 5. 시스템 종료"
echo " q. 프로그램 종료"
echo "=================================="
echo -n "메뉴를 선택 해볼래? : "
read tac1

 

echo "$tac1 을 선택하였습니다."


case $tac1 in
        1)./user/usermain.sh;;

        2)./ch/chmain.sh;;

        3)./hard/hdmain.sh;;

        4)./search/search.sh;;

        5)./sys/sysinfo.sh;;

        q)exit;;
esac

 

===================================================================================================

[ useradd.sh ]

pwd : /backup/shell/user

#vi ./useradd.sh

===================================================================================================

#!/bin/bash
clear
echo "================================"
echo "입력할 사용자 정보를 넣어주세요."
echo "================================"
echo -n "UserName 을 입력하세요 : "
read uaddname
if [ -z $uaddname ]
then
        echo "빈값을 입력하여 프로그램을 종료합니다."
        exit
else
        uaddname="$uaddname"
fi

 

echo -n "Uid 를 입력하세요 : "
read uadduid
if [ -z $uadduid ]
then
        echo "빈값을 입력하였습니다."
else
        uadduid="-u $uadduid"

fi


echo -n "Gid 를 입력하세요 : "
read uaddgid
if [ -z $uaddgid ]
then
        echo "빈값을 입력하였습니다."
else
        uaddgid="-g $uaddgid"
fi

 

echo -n "Home Directory 를 입력하세요 : "
read uaddhome
if [ -z $uaddhome ]
then
        echo "빈값을 입력하였습니다."
else
        uaddhome="-d $uaddhome"
fi

useradd $uadduid $uaddgid $uaddhome $uaddname


echo "입력하신 $uaddname 으로 생성하였습니다"
echo "================================"
echo -n "생성된 사용자 정보를 보시겠습니까?(yes/no) : "
read catuser
if [ -z $catuser ]
then
        echo "꺼져!"
        /backup/sh/main.sh
else
        if [ $catuser = "yes" ]
        then
                cat /etc/passwd | grep $uaddname
                echo -n "확인하셨습니까?"
                read
                /backup/sh/main.sh
        else
                echo "빠욤!"
                /backup/sh/main.sh
        fi
fi

 

===================================================================================================

[ usermod.sh ]

pwd : /backup/shell/user

#vi ./usermod.sh

===================================================================================================

#!/bin/bash
clear
echo "================================"
echo "수정할 사용자 정보를 넣어주세요."
echo "================================"
echo -n "UserName 을 입력하세요 : "
read umodname
if [ -z $umodname ]
then
        echo "빈값을 입력하여 프로그램을 종료합니다."
        exit
else
        umodname="$umodname"
fi

echo -n "Uid 를 입력하세요 : "
read umoduid
if [ -z $umoduid ]
then
        echo "빈값을 입력하였습니다."
else
        umoduid="-u $umoduid"
fi

 

echo -n "Gid 를 입력하세요 : "
read umodgid
if [ -z $umodgid ]
then
        echo "빈값을 입력하였습니다."
else
        umodgid="-g $umodgid"
fi

echo -n "Home Directory 를 입력하세요 : "
read umodhome
if [ -z $umodhome ]
then
        echo "빈값을 입력하였습니다."
else
        umodhome="-d $umodhome -m"
fi

usermod $umoduid $umodgid $umodhome $umodname
echo "입력하신 $umodname 으로 생성하였습니다"
echo "================================"
echo -n "수정된 사용자 정보를 보시겠습니까?(yes/no) : "
read catuser
if [ -z $catuser ]
then
        echo "꺼져!"
        /backup/shell/main.sh
else
        if [ $catuser = "yes" ]
        then
                cat /etc/passwd | grep $umodname
                echo -n "확인하셨습니까?"
                read
                /backup/shell/main.sh
        else
                echo "빠욤!"
                /backup/shell/main.sh
        fi
fi

===================================================================================================

[ userdel.sh ]

pwd : /backup/shell/user

#vi ./userdel.sh

===================================================================================================

#!/bin/bash
clear
echo "================================"
echo "삭제할 사용자 정보를 넣어주세요."
echo "================================"
echo -n "UserName 을 입력하세요 : "
read udelname
if [ -z $udelname ]
then
        echo "빈값을 입력하여 프로그램을 종료합니다."
        exit
else
        echo "홈디렉터리도 함께 삭제하시겠습니까?(yes/no) : "
        read udelmax
        if [ $udelmax = "yes" ]
        then
                userdel -r $udelname
        else
                userdel $udelname
        fi
fi


echo "입력하신 $udelname 사용자를 삭제하였습니다"
echo "================================"
echo -n "삭제된 사용자 정보를 보시겠습니까?(yes/no) : "
read catuser
if [ -z $catuser ]
then
        echo "꺼져!"
        /backup/sh/main.sh
else
        if [ $catuser = "yes" ]
        then
                cat /etc/passwd | grep $udelname
                echo -n "삭제되셨습니까?"
                read
                /backup/sh/main.sh
        else
                echo "빠욤!"
                /backup/sh/main.sh
        fi
fi

===================================================================================================

'Program > Shell-Script' 카테고리의 다른 글

Shell Script (기초)  (0) 2014.08.20
AND