shell script 요약

os/linux 2012. 10. 18. 15:33


1.변수

DD=0

echo "$DD"

- 환경변수

$0 - 실행된 쉘 스크립트 이름
$# - 스크립트에 넘겨진 인자의 갯수
$$ - 쉘 스크립트의 프로세스 ID

- 인자변수

$1~ $nnn  : 넘겨진 인자들
$*        : 스크립트에 전달된 인자들을 모아놓은 문자열. 하나의 변수에 저장되며
              IFS 환경변수의 첫번째 문자로 구분된다.
$@        : $*과 같다. 다만 구분자가 IFS변수의 영향을 받지 않는다.


- 연산

변수 = $((산술식))

- 매개변수 확장

${parm:-default}	: parm이 존재하지 않으면 default로 대체된다.
${#parm}          : parm의 길이를 참조한다.(가져온다)
${parm%word}      : 끝에서부터 word와 일치하는 parm의 최소부분(첫번째 일치) 을
                    제거하고 나머지를 반환한다.
${parm%%word}     : 끝에서부터 word와 일치하는 parm의 최대부분(마지막 일치) 을
                    제거하고 나머지를 반환한다.
${parm#word}      : 처음부터 word와 맞는 parm의 최소부분(첫번째 일치)을 제거하
                    고 나머지 부분을 반환한다.
${parm##word}     : 처음부터 word와 맞는 parm의 최대부분(마지막 일치)을 제거하
                    고 나머지를 반환한다.
		
  * word에는 와일드 카드를 사용할 수 있다.


2.조건판단

- if문

if [ -f test1 ]
then

elif [ ] then

else

fi

- case문

case 변수 in

패턴 [ | 패턴 ]...) 문장;;

* ) 문장;;

easc

test 명령 조건

문자열비교
    [ string ]             : string이 빈 문자열이 아니라면 참
    [ string1 = string2 ]  : 두 문자열이 같다면 참
    [ string1 != string2 ] : 두 문자열이 다르면 참
    [ -n string ]          : 문자열이 null(빈 문자열) 이 아니라면 참
    [ -z string ]          : 문자열이 null(빈 문자열) 이라면 참
		
  산술비교
    [ expr1 -eq expr2 ]	: 두 표현식 값이 같다면 참 ( EQual )
    [ expr1 -ne expr2 ]	: 두 표현식 갑이 같지 않다면 참 ( Not Equal )
    [ expr1 -gt expr2 ]	: expr1 > expr2 이면 참 ( Greater Then )
    [ expr1 -ge expr2 ]	: expr1 >= expr2 이면 참 ( Greater Equal )
    [ expr1 -lt expr2 ]	: expr1 < expr2 이면 참 ( Less Then )
    [ expr1 -le expr2 ]	: expr1 <= expr2 이면 참 ( Less Equal )
    [ ! expr ]          : expr 이 참이면 거짓, 거짓이면 참
    [ expr1 -a expr2 ]  : expr1 AND expr2 의 결과 ( 둘다 참이면 참 )
    [ expr1 -o expr2 ]  : expr1 OR expr2 의 결과 ( 둘중 하나만 참이면 참 )
		
  파일조건

    [ -b FILE ]           : FILE 이 블럭 디바이스 이면 참
    [ -c FILE ]           : FILE 이 문자 디바이스 이면 참.
    [ -d FILE ]           : FILE 이 디렉토리이면 참
    [ -e FILE ]           : FILE 이 존재하면 참
    [ -f FILE ]           : FILE 이 존재하고 정규파일이면 참
    [ -g FILE ]           : FILE 이 set-group-id 파일이면 참
    [ -h FILE ]           : FILE 이 심볼릭 링크이면 참
    [ -L FILE ]           : FILE 이 심볼릭 링크이면 참
    [ -k FILE ]           : FILE 이 Sticky bit 가 셋팅되어 있으면 참
    [ -p FILE ]           : True if file is a named pipe.
    [ -r FILE ]           : 현재 사용자가 읽을 수 있는 파일이면 참
    [ -s FILE ]           : 파일이 비어있지 않으면 참
    [ -S FILE ]           : 소켓 디바이스이면 참
    [ -t FD   ]           : FD 가 열려진 터미널이면 참
    [ -u FILE ]           : FILE 이 set-user-id 파일이면 참
    [ -w FILE ]           : 현재 사용자가 쓸 수 있는 파일(writable file) 이면 참
    [ -x FILE ]           : 현재사용자가 실행할 수 있는 파일(Executable file) 이면 참
    [ -O FILE ]           : FILE 의 소유자가 현재 사용자이면 참
    [ -G FILE ]           : FILE 의 그룹이 현재 사용자의 그룹과 같으면 참
    [ FILE1 -nt FILE2 ]   : FILE1이 FILE2 보다 새로운 파일이면 ( 최근파일이면 ) 참
    [ FILE1 -ot FILE2 ]   : FILE1이 FILE2 보다 오래된 파일이면 참
    [ FILE1 -ef FILE2 ]   : FILE1 이 FILE2의 하드링크 파일이면 참

3.제어문

- for문

for 변수 in 값1, 값2, ...
do
    문장
done

- while문

while 조건문
do
      문장
done

- until문

until 조건문 do 문장 done

- select문

echo "다음중 스크립트언어 프로그래밍에 속하는 것은 ?" select var in "쉘 프로그래밍" "C 프로그래밍" "자바 프로그래밍" "Exit" do if [ "$var" = "쉘 프로그래밍" ] then echo "정답입니다." exit 0 elif [ "$var" = "Exit" ] then echo "종료합니다."      exit 1 else echo "$var 을 선택하셨습니다. 오답입니다." echo "다음중 스크립트언어 프로그래밍에 속하는 것은 ?" fi done

4.함수

함수명 () {     문장     return 값 }

함수명 인자1 인자2

5.명령어

break

continue

echo

eval

exec

exit n

export

expr

printf

return

set

shift

trap

unset

6.명령실행

x = $(명령)
7.내부에서 명령에 입력 전달하기

명령 << 종료문자열         입력값..... 종료문자열


ref:

http://wiki.kldp.org/KoreanDoc/Shell_Programming-KLDP

'os > linux' 카테고리의 다른 글

fedora19 systemd (init.d 대체)  (0) 2013.08.16
fedora 19 desktop setting  (0) 2013.08.02
fedora 19 + haswell + vritual box  (0) 2013.08.02
vi tips  (0) 2012.10.17
Posted by 뚜벅이조
,