예전부터 관심음 있었지만 딱히 배울 필요성을 못느꼈던 쉘 스크립트를 공부해보았다.
어느정도 문법은 C와 다르지 않을 것이라는 전제에서 시작하였으므로 C와 다른 점을 기본으로 정리해보고자 한다.
1. 문장 첫 라인
문장 첫라인은 항상 #!/bin/bash 로 시작한다. 다른 타입의 쉘스크립트 언어였다만 좀 달라지겠지만 일단 bash만 언급하겠다. (참고로 #은 주석)
2. 변수
변수는 A=1 이런 식으로 선언하고 부를 때 $A 라는 식으로 부른다.
($는 PHP만 쓰는 게 아니었다.ㅋㅋ 돈을 밝히는 건지 ㅋㅋ)
주의 : = 양쪽에 띄어쓰기를 하면 절대 안된다. 난 띄어쓰는 습관이 들어져서 첨에 상당히 짜증났다.
3. 입출력
화면 출력은 echo를 사용하고 기본적으로 newline이 적용된다. -n 옵션을 주면 newline이 적용되지 않는다.
입력은 read 변수 를 사용한다.
4. 실행
sh 파일명 혹은 ./파일명을 사용한다. 그러나 ./파일명을 사용할 때는 권한을 잘 살펴보길 바란다.
5. Argument
쉘스크립트의 가장 강점이 아닐까. $1, $2... 이런 식으로 변수에 들어간다. $# 하면 argument의 개수
6. 크기 비교
조건식에 -gt, -lt, -ge, -le, -eq, -ne 라는 옵션을 사용한다. greater than 이런 것들의 약자이다.
7. 숫자 계산
쉘스크립트에서 가장 짜증 나는 점. expr이라는 문법을 사용해야 한다.
num=`expr \( 3 \* 5 \) / 4 + 7`
숫자와 연산자간의 띄어쓰는 것을 잊지 말고 *는 all로 인식하므로 역슬래쉬를 꼭 사용한다.
8. 문자열
조건식에 "문자열1"="문자열2"로 비교한다. != 도 먹힌다. -z, -n 은 문자열 길이가 0인지 아닌지 판별할 때 사용
9. 파일
옵션만 잘 기억하면 된다 특히 -f, -s, -d
-f : 파일이 있는 경우
-s: 파일이 존재하고 내용이 있는 경우
-d: 디렉토리인 경우
-r : 읽기가 가능한 파일인 경우
-w : 쓰기가 가능한 파일인 경우
-x : 파일이 존재하고 실행 가능할 경우
! - 옵션 : 옵션의 조건이 아닐 경우
10. if/else
if [ 조건문 ]
then
......
elif [ 조건문 ]
then
else
fi
조건문에서 [ ]의 띄어쓰기를 잊지말자, and, or 옵션도 기억하자.
-a : and
-o : or
11. for
for 변수명 in 변수값1 변수값2 변수값3
do
.....
done
C의 for문과 상당히 다르므로 주의 하자. 파일 목록의 수에 따라 루프를 돌릴 때 유용하다.
A=`ls /etc`
for B in `echo $A`
do ...
done
12. while
while [ 조건문 ]
do
....
done
C와 유사하다. 조건문이 참일 때 루프를 돈다. [ : ] 일때는 무조건 참이므로 무한루프
13. until
until [조건문]
do
....
done
C와 유사하다. 조건문이 거짓이면 do~done 구문을 실행한다.
14. case
case 변수 in
패턴1)
스크립트;;
패턴2)
스크립트;;
*)
스크립트;;
esac
C와 유사하지만 패턴 다음에 )를 한다던지 스크립트 다음에 ;; 을 하는 것에 주의하자.
case를 거꾸로한 esac는 만든 이의 악취미인 듯...
15. continue, break
C와 쓰임새가 같다.
16. ANSI Escape Code
출력시 색깔 넣을 때 유용하다.
echo "^[[31m Hi ^[[0m"
30~37까지 글자색이, 40~47까지 배경색이 있다.
처음 ^은 Ctrl+v 이고, 다음 [은 Ctrl+Esc, 다음 [은 그냥 [를 키보드에서 입력하면 된다.
17. 그 밖에...
일단 세미콜론(;)이 문장마다 없고, 스크립트 언어이므로 컴파일이 필요 없다.
그리고 명령문을 변수에 담을 때는 작은 따옴표 '가 아닌 `을 사용해야 한다.
case 스크립트에는 `를 할 필요가 없다.
차후 더 보충할 사항이 있으면 차차 올리겠다.
'UNIX&LINUX > 쉘스크립트' 카테고리의 다른 글
쉘스크립트 기본 for문 (0) | 2014.07.14 |
---|---|
쉘스크립트 기본 case문 select문 (0) | 2014.07.14 |
쉘스크립트 기본 while문 until문 (0) | 2014.07.14 |
소소한 쉘스크립트 Tip 하나 (0) | 2014.07.14 |
Class file : createNewFile (0) | 2014.06.05 |
쉘스크립트 참조 블로그 (0) | 2014.05.16 |
BASH 쉘스크립트 기초 - 변수 & 연산 (0) | 2014.05.13 |
쉘 스크립트 레드마인 (0) | 2014.05.13 |