본문 바로가기
프로그래밍/LINUX

[LINUX 19일차] CentOS 쉘 스크립트(자료계산<expr>, argument, 조건문<if>, 반복문<for, while>)

by B T Y 2017. 4. 4.
반응형

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까지 출력이 되는걸 볼 수 있다 )




반응형

댓글