SHELL 변수. (env는 기본적인 환경변수를 보여주지만 set는 전체 환경변수를 보여준다.) ------------------------------- ------------------------------- ------------------------------- ### 조건 판단명령어 # 연산자 ==> 산술비교 ==> 파일조건 ksh 경우 제어문, 배열(1차원), 함수(call by value) 2. if 구문. ==> 단순 if 문 ==> if ~else 문 ==> 다중 if 문 3. and list / or list or list and list 및 or list의 혼용 ------------------------------- ------------------------------ -------------------------------- ------------------------------- for 변수 in list for 변수 in list ------------------------------- 8. 함수 break / continue : 의미 없는 명령. 논리 값 true를 대신해서 쓰기도 한다. . 명령 - 스크립트를 실행. 스크립트 내에서 다른 파일을 include하는 경우에도 사용 exec - 현재 shell을 다른 shell 로 대체 shift : shell의 인자를 오른쪽으로 하나 shift 한다. -------------------------------
사용자와 Unix 커널사이의 인터페이스 역할을 하는 프로그램.
. 사용자가 내린 명령어를 해석하여 커널에게 전달하는 역할을 한다.. 명령어 해석기로도 불린다.?.shell 의 역할- 입력을 읽고 해당 명령행을 분석.- 특수문자 평가- 파이프, 리디렉션, 백그라운드 프로세스를 처리
unix 주요 shell
1.bash(bourne again shell) : 리눅스의 기본셀. 편리한 사용자 인터페이스 및 본셀과 비교하여?확장된 문법제공. 본셀과는 기본적으로 호환됨. 명령행 편집기능 제공. GNU 프로젝트에 의해 만들어지고 배포됨.
2. sh(bourne shell) : steven bourne 이 개발한 최초의 대중화 된 유닉스 셀??? 명령행 편집기능을 제공하지 않는다.
3.csh(c shell) : billy joy에 의해 개발된 셀로 프로그래머들이 선호하는 셀.unix 의 기본셀인 본셀과는?호환되지 않는다. 변수선언부터 다르다
4. ksh(korn shell) : david korn이 개발. 사용자 인터페이스가 뛰어나고 본셀과도호환되어 유닉스에서 가장 많이 사용하는 셀로 알려짐. 명령행 편집기능 제공.
*. shell (login shell인경우)설정 파일.
1.bash shell /etc/profile => $HOME/.bash_profile => .bashrclogin shell 을 끝낼때 ; $HOME/.bash_logout 그리고 bash shell 사용기록을 저장하는 $HOME/.bash_history 라는 파일이 있다. bash shell을 사용하는 사용자가 logout 시 그때까지의 기록을 추가한다.
2. csh/etc/.login =>? $HOME/.cshrc => $HOME/.login
### shell 문법
환경변수 - 미리 정의된 변수 (shell 환경과 관련된 변수)
특징 - 대문자만 사용 (묵시적 약속)
server [/tmp]#
server [/tmp]# env
_=/bin/env
MANPATH=/usr/share/man:/usr/dt/share/man
LANG=ko
HZ=100
PATH=/bin:/usr/bin:/usr/sbin:/sbin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
LOGNAME=root
MAIL=/usr/mail/root
SHELL=/bin/ksh
HOME=/
TERM=xterm
PWD=/tmp
TZ=ROK
ENV=/.kshrc
server [/tmp]#
------------------------------
### 사용자 정의 변수
특징 - 소문자만 사용 (묵시적 약속)
사용자 정의변수를 export 명령을 주게되면 환경변수가 된다.
server [/tmp/shell]#
server [/tmp/shell]# cat ./var.sh
a="A B C D"
echo $a
echo "$a"
echo '$a'
echo \$a
echo a
echo ${a}
echo `$a`
server [/tmp/shell]#
server [/tmp/shell]#
server [/tmp/shell]# ./var.sh
A B C D
A B C D
$a
$a
a
A B C D
./var.sh[8]: A: not found
server [/tmp/shell]#
server [/tmp/shell]#
-------------------------------
### shell 내장변수
특징 - 사용자가 정의 할 수 없는 변수명 사용
$0 , $1 ... $n ==> 위치 매개변수
$# ==> 인자의 갯수를 저장하는 변수
$* ==> 모든 인자를 저장하는 변수
$@ ==> 모든 인자를 저장하는 변수
$? ==> 리턴값을 저장하는 변수
$$ ==> 현재 프로세스 id를 저장하는 변수
server [/tmp/shell]#
server [/tmp/shell]# cat aaa.sh
echo "$0 $1 $2 $5"
echo "$#"
echo "$*"
echo "$@"
echo "$?"
echo "$$"
server [/tmp/shell]#
server [/tmp/shell]# ./aaa.sh 111 222 333 444
./aaa.sh 111 222
4
111 222 333 444
111 222 333 444
0 <-- (0이면 True / 1~255이면 False)
1015
server [/tmp/shell]#
-------------------------------
test ==> check file types and compare values
==> 문자열비교
[string] : string이 빈 문자열이 아니라면 참
["string1" = "string2"] : 두 문자열이 같으면 참
[“string1" != "string1" ] : 두 문자열이 같지 않으면 참.
[ -n "string" ] : 문자열이 null(빈 문자열) 이 아니라면 참.
[ -z "string" ] : 문자열이 null(빈 문자열)이라면 참
[ expr1 -eq expr2 ] : 두 표현식 값이 같다면 참.BR>[ expr1 -ne expr2 ] : 두 표현식 값이 않다면 참.
[ expr1 -gt expr2 ] : expr1 이 expr2 보다 크다면 참
[ expr1 -ge expr2 ] : expr1 이 expr2 보다 크거나 같으면 참
[ expr1 -lt expr2 ] : expr1 이 expr2 보다 작다면 참
[ expr1 -le expr2 ] : expr1 이 expr2 보다 작거나 같으면 참
[ -b file ] : file이 block device file이면 참
[ -c file ] : file이 character device file 이면 참
[ -d file ] : file이 directory file이면 참
[ -f file ] : file이 정규파일이면 참
[ -r file ] : file이 읽기권한이면 참
[ -w file ] : file이 쓰기권한이면 참
[ -x file ] : file이 실행권한이면 참
[ -L file ] : file이 symbolic link file이면 참
[ -e file ] : file이 존재하면 참
[ -s file ] : file의 용량이 0보다 크면 참
### 산술연산자
sh 경우
expr로 산술연산 처리
-------------------------------
ex) expr 2 \* 5
-------------------------------
expr 또는 (( 수식 ))
read $n ==> 쉘 스크립트 실행 후 값을 입력 받음
if [ 조건 ]
then
실행문장
fi
if [ 조건 ]
then
실행문장
else
실행문장
==> if ~ else if 문
if [ 조건 ]
then
실행문장
elif [ 조건 ]
then
실행문장
fi
if [ 조건 ]
then
if [ 조건 ]
then
실행문장
fi
fi
and list
실행문장 && 실행문장 && 실행문장 && ....
거짓이 될 때까지 실행문장을 실행한다.
실행문장 || 실행문장 || 실행문장 || ...
실행문장이 참이 될 때까지 실행한다.
[ 조건 ] && 문장1 || 문장2
위에서 조건이 참이면 문장1을 수행하고 거짓이면 문장2를 수행한다.
4. case 구문
case 변수 in
패턴 | 패턴 | ... )
문장 ;;
패턴 | 패턴 | ...)
문장;;
*) 문장 ;;
esac
ex) 10문항의시험문제 점수 처리
-------------------------------
server [/tmp/shell]#
server [/tmp/shell]# cat case.sh
while [ 0 ]
do
/usr/ucb/echo -n "input jumsu : "
read jumsu
case $jumsu in
100|90)
echo "Excllent!"
echo "A";;
80)
echo "B";;
70)
echo "C";;
quit)
exit;;
*)
echo "F";;
esac
echo ""
done
server [/tmp/shell]#
-------------------------------
5. while 구문
## 단순 while 문
while [ 조건 ]
do
실행문장
done
ex) 1부터 10까지 출력 후 SUM값 출력
------------------------------
sum=0
i=1
while [ $i -le 10 ]
do
print -n "$i "
((sum=sum+i))
((i=i+1))
done
print " [SUM:$sum] "
------------------------------
## 다중 while 문
while [ 조건 ]
do
while [ 조건 ]
do
실행문장
done
done
ex)
--------------------------------
echo -n "input password : "
read password1
echo -n "retype password : "
read password2
while [ "$passowrd" != "$password2" ]
do
echo "password miss match ty again"
read password2
done
echo "OK ! password Match complete"
--------------------------------
6. until 구문
until [ 조건 ]
do
실행문장
done
ex)
-------------------------------
until who | grep "$1" > /der/null
do
sleep 5
done
echo "user $1 just logged in"
-------------------------------
6 for 문
do
실행문장
done
do
for 변수 in list
do
실행문장
done
done
ex)
-------------------------------
for string in "hello" "unix" "world"
do
echo -n "$string "
done
-------------------------------
7. select 문.
select 변수 in list
do
실행문장
done
함수명 () {
실행문장
[ return value ]
}
또는
function 함수명 {
실행문장
[ return value ]
}
break 제어문이나 조건문의 루프를 빠져나갈 때 사용한다.
continue : 제어문이나 조건문의 처음으로 돌아가서 다시 수행한다.
exit n : 현재 shell 종료 시 리턴 값 n 반환
ex)
-------------------------------
echo $1
shift
echo $1
shift 3
echo $1
./script 1 2 3 4 5 6 7
1
2
5
-------------------------------
'Language > Unix' 카테고리의 다른 글
[펌] Cron Format (0) | 2012.05.09 |
---|---|
[펌] Unix 8 쉘프로그래밍 (0) | 2010.09.28 |
[펌] How to Use VI (0) | 2010.09.27 |
Linux, unix, ^M, 리눅스, 없애기, 유닉스 (0) | 2009.06.18 |