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문
- 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