블로그 이미지
progh2
지루한 것에서 벗어나 재미난 것 속으로 풍덩~☆

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Recent Post

Recent Comment

Archive

변수
기본적으로 모든 변수는 숫자값을 가지는 경우에도 스트링으로 간주, 필요에 따라 적절히 숫자로 인식할 것이다. 또한 대소문자를 구분하며 변수에 값을 부여할 때를 제외하고는 변수 앞에 $ 문자를 추가할 필요가 있다. 또한 스트링에 빈 칸이 포함된다면 큰 따옴표를 사용해야 한다. 그리고 값을 부여시 등호 양쪽에 빈칸이 없어야 한다.
[CODE]#!/bin/sh myvar="Hi rhere" echo $myvar echo "$myvar" echo '$myvar' echo $myvar echo Enter some text read myvar echo '$myvar' now equals $myvar exit 0[/CODE]
환경변수 - 쉘 스크립트가 시작될 때 초기화되는 환경의 값들을 가진 변수.
[CODE]$HOME 현재 사용자의 홈 디렉토리 $PATH 명령을 검색하는 디렉토리들의 목록. 콜론으로 구분 $PS1 대개 $인 명령 프롬프트 $PS2 추가적인 입력을 요구할 때 사용되는 2차 프롬프트. 대개 > $IFS 입력필드구분자. 쉘이 입력을 받아들일 때 단어를 구분하는 데 사용하는 문자의 목록으로, 대개 빈 칸, 탭, 새 줄 문자이다. $0 쉘 스크립트의 이름 $# 전달된 파라미터의 수 $$ /tmp/tmpfile_$$와 같이 종종 독특한 임시 파일 이름을 생성하기 위해 스크립트에서 사용하는 쉘 스크립트의 프로세스 ID[/CODE]

파라미터 변수
[CODE]$1, $2, ... 스크립트에 주어진 파라미터 $* 환경 변수 IFS의 첫 문자로 구분되고, 하나의 변수에 저장되는 모든 파라미터의 목록 $@ IFS 환경 변수를 사용하지 않는 $*에 대한 변형 [/CODE]

조건
test와 [] - 조건이 만족되었는지의 여부를 가리키는 test 명령의 종료코드는 조건적인 코드가 실행되었는지를 결정한다.
if test -f fred.c
then
...
fi
위와 같은 뜻..
if [ -f fred.c ]; then
...
fi
[]와 테스트되는 조건 사이에 빈칸이 추가되어야 한다.

스트링비교
string1 = string2 두 스트링이 같으면 참
string1 != string2 두 스트링이 같지 않으면 참
-n string 두 스트링이 널이 아니면 참
-z string 두 스트링이 널(빈 스트링)이면 참
산술비교
ex1 -eq ex2 두 수식이 같으면 참
ex1 -ne ex2 두 수식이 같지 않으면 참
ex1 -gt ex2 ex1이 ex2보다 크면 참
ex1 -ge ex2 ex1이 ex2보다 크거나 같으면 참
ex1 -lt ex2 ex1이 ex2보다 작으면 참
ex1 -le ex2 ex1이 ex2보다 작거나 같으면 참
! exp 두 수식이 거짓이라면 참 (또는 그 반대)
파일 조건
-d file 파일이 디렉토리면 참
-f file 파일이 파일이면 참 ( -e 대용으로도 많이 쓰인다. )
-e file 파일이 존재하면 참
-r file 파일이 읽기가능하면 참
-w file 파일이 쓰기가능이면 참
-x file 파일이 실행가능이면 참
-g file 파일에 set-group-id가 설정되면 참
-u file 파일에 set-user-id가 설정되면 참


프로그램 제어
if - 예문 하나로 설명 끝.
[CODE]#!/bin/sh echo " Is it mornig? Please answer yes or no" read timeofday if [ "$timeofday" = "yes" ]; then echo "Good morning" elif [ "$timeofday" = "no" ]; then echo "Good afternoon" else echo "Sorry, $timeofday not recognized. Enter yes or no" exit 1 fi exit 0[/CODE]
[ $timeofday = "no" ] 식으로 표현할 경우 변수값이 null 이면 [ = "no" ] 식이 되버려 에러가 발생하므로 "$timeofday" 라고 표현해주어야 한다.
for
for variable in values
do
statements
done

[CODE]#!/bin/sh for file in $(ls f*.sh); do echo $file done exit 0[/CODE]
while
while condition
do
statements
done

[CODE]#!/bin/sh foo=1 while [ "$foo" -le 20 ] do echo "$foo Here we go again" foo=$(($foo+1)) done exit 0[/CODE]
until
[CODE]until condition do statements done[/CODE]

[CODE]#!/bin/bash until who | grep "$1" > /dev/null do sleep 60 done # 경고음을 내고 사용자에게 알려준다. echo -e \a echo "*** $1 has just logged in ***" exit 0[/CODE]
case
[CODE]case var in pattern [ | pattern ] ...) statements;; pattern [ | pattern ] ...) statements;; ... esac[/CODE]

[CODE]#!/bin/bash echo "Is it morning? Please answer yes or no" read timeofday case "$timeofday" in [yY] | [yY][eE][sS] ) echo "Good Morning";; [nN] | [nN][oO] ) echo "Good Afternoon";; * ) echo "Sorry, answer not recognized" exit 1;; esac exit 0[/CODE]
posted by progh2