CentOS 쉘 프로그래밍(자료계산<expr>, argument, 조건문<if>, 반복문<for, while>)에 대해서 정리한다.
※ 쉘 프로그래밍
1. 자료 계산
#>expr 산술식
+ 더하기
- 빼기
\* 곱하기
/ 나누기(몫)
% 나누기(나머지)
- 산술식을 사용할 때 기호 앞뒤로 공백이 있어야 의도대로 동작한다.
- 곱하기( * )는 그냥 적게 되면 와일드카드로 인식하기 때문에 앞에 \를 붙여준다.
( 쉘 스크립트를 이용해 read를 이용해서 num1과 num2 변수에 입력 받은 값을 저장시켜
expr로 서로 더한 결과를 res1 변수로 출력 해줬다 )
( num1과 num2를 더한 값이 제대로 나오는걸 볼 수 있다 )
2. argument
$0 쉘 스크립트 이름
$1, $2, $3, ... 스크립트에 주어진 argument
$# 주어진 argument의 갯수
$* 주어진 모든 argument
( 첫번째, 두번째 argument를 받아서 서로 더한 결과를 출력해주는
쉘 스크립트 파일을 만들었다 )
( 쉘 스크립트를 실행할때 뒤에 공백으로 구분해서 argument를 주면 되고
expr이 숫자만 계산이 가능하다는걸 여기서 알 수 있다 )
3. 조건문 / 반복문
1) if문
- 아래 나온것처럼 [ 조건 ]에 공백을 신경써서 적어줘야 한다.
if [ 조건 ]
then
command
elif [ 조건 ]
then
command
else
command
fi
- 크기 비교( 숫자 )
[ $A -gt $B ] : A값이 B값보다 크다
[ $A -lt $B ] : A값이 B값보다 작다
[ $A -ge $B ] : A값이 B값보다 크거나 같다
[ $A -le $B ] : A값이 B값보다 작거나 같다
[ $A -eq $B ] : A값이 B값보다 같다
[ $A -ne $B ] : A값이 B값보다 다르다
- 문자열 비교
[ "string" = "string" ] : 두 문자열이 같은 경우
[ "string" != "string" ] : 두 문자열이 다른 경우
[ -z "string" ] : 문자열의 길이가 0인 경우
[ -n "string" ] : 문자열의 길이가 0이 아닌 경우
- 파일 비교
( 이 외에도 종류는 더 있다 )
[ -d path ] : 파일이 존재하고, 디렉터리
[ -f path ] : 파일이 존재하고, 일반파일
( num1이 num2보다 크기 때문에 300 big이라는 결과가 나오게 된다 )
2) for문
for 변수 in list
do
command
done
( 위에 보이는거와 같이 출력이 되고 띄어쓰기 된 문자를 출력 하려면
싱글 쿼터나 더블 쿼터로 묶어주면 된다 )
* 만약 위 for문에서 1~100까지 출력을 하고 싶다면 list 부분에 { 1..100 } 이라고 넣어주면
1부터 100까지 순서대로 출력이 된다.
( for문 안에 useradd 명령어를 넣어서 쉘 스크립트 한번에 실행으로 여러명의 사용자를
생성 해줄수 있다 )
( 이런식으로 쉘 스크립트를 이용해서 다양한 자동화 작업을 할 수 있다는걸
알 수 있다 )
3) while문
- while문을 사용해 반복 할 때는 초기값을 변수에 지정해주고
그 변수에 대한 증감식을 넣어주어야 무한 루프가 되는걸 방지 할 수 있다.
while [ 조건문 ]
do
command
done
( i라는 변수에 1값으로 초기화 해주고 1부터 10까지 순서대로
출력하는 while문을 만들었다 )
( sh script6.sh로 쉘 스크립트 실행시 1부터 10까지 출력이 되는걸 볼 수 있다 )
댓글