본문 바로가기

OS-서버/리눅스-유닉스

쉘스크립트 기본 문법

반응형

 

● 변수

 

① 변수 사용

 
name="linux"
echo $linux
cs

 

② expr(산수 계산)

1
2
3
4
5
expr 1 + 1  
# 2
 
expr 1+1
# 1+1
cs

연산자와 피연산자는 space로 구분된다.

 


③ 명령 실행결과를 변수에 저장하는 방법

 

   ` 백틱(backtick)이라는 기호를 통해서 명령 실행결과를 변수에 저장시킨다.

       기능은 문자열안에 들어있는 쉘명령어를 문자열로 인식하지않고 쉘명령어로 해석한다.

 

1
2
3
4
5
6
#1
str1=`whoami`  
echo $str1
#2
str2=$(whoami)
echo $str2
cs

 

만약 실행 결과가 여러 줄이라면 echo에 큰 따옴표를 붙여서
원본과 동일하게 출력할 수 있다.  

 
echo "$str1"
cs

 

④ 값 입력 받기

 
read vars
cs

 

 

 

● 조건문

 

 ○ 제어

if [ 조건 ]; then 
       ...
elif [ 조건 ]; then
       ...
else
       ...
fi
cs

 

   비교 연산자


연산자  의미  부등호 
-eq  Equals(같다)  = 
-ne  Does not equal(같지않다)  != 
-gt  Greather than(크다)  > 
-lt  Less than(작다)  < 
-ge  Greater than or equal to(크거나 같다)  >=
-le   Less than or equal to (작거나 같다)  <=

 

 

 

● 반복문


○ while

#!/bin/bash
i=0
while [ $i -lt 5 ]
do
     i=`expr $i + 1`
     echo "$i"
 
done
cs

 

○ for

ex2
#!/bin/bash
for i in {1..5}
do
   echo "$i"
done
cs

 

   배열 : http://wiki.redjini.com/linux/script/array


 

배열 선언

array_name_1=("value 1" "value 2" "value 3") array_name_2=(1 2 3) 

배열 참조

array_name=("value 1" "value 2" "value 3")   echo "array_name[0]     = ${array_name[0]}"  #print array_name[0] echo "array_name[2]     = ${array_name[2]}"  #print array_name[2] echo "array_name[*]     = ${array_name[*]}"  #print array_name all item echo "array_name[@]     = ${array_name[@]}"  #print array_name all item echo "array_name index  = ${!array_name[@]}" #print array_name index number echo "array_name size   = ${#array_name[@]}" #print array_name size echo "array_name[0] size= ${#array_name[0]}" #print array_name[0] size  #출력 결과 #array_name[0]     = value 1 #array_name[2]     = value 3 #array_name[*]     = value 1 value 2 value 3 #array_name[@]     = value 1 value 2 value 3 #array_name index  = 0 1 2 #array_name size   = 3 #array_name[0] size= 7 

배열 크기

array_name_1=("value 1" "value 2" "value 3")   echo ${#array_name_1[@]}  #print "3" 

배열 출력

array_name=("value 1" "value 2" "value 3")   echo "array = ${array_name[@]}" # 출력 결과 # array = value 1 value 2 value 3   printf "value = %s\n" "${array_name[@]}" # 출력 결과 # value = value 1 # value = value 2 # value = value 3   for value in "${array_name[@]}"; do     echo $value done # 출력 결과 # value 1 # value 2 # value 3   for (( i = 0 ; i < ${#array_name[@]} ; i++ )) ; do     echo "value[$i] = ${array_name[$i]}" done # 출력 결과 # value[0] = value 1 # value[1] = value 2 # value[2] = value 3   for index in ${!array_name[*]} ; do     printf "%4d: %s\n" "$index" "${array_name[$index]}" done # 출력 결과 #   0: value 1 #   1: value 2 #   2: value 3

 

 

 

● 표준 입출력

 

 

○ 0, 1, 2는 각각 표준입력, 표준출력, 그리고 표준에러를 의미한다.

 

 

 1  표준 출력 제거

 > /dev/null ← 쓰레기통으로 비유한다.

 

예시) ls -al > /dev/null # ls -al 결과값이 버려진다.

 

 2  표준 에러를 표준 출력으로 리다이렉션 

> /dev/null 2>&1
cs

 

표준출력 ---> /dev/null

 

표준에러 ---> 표준출력 ↗

 

예시) abcd -w > /dev/null 2>&1 
# 위 abcd라는 명령은 존재하지 않으므로 오류를 반환한다. 
  하지만 표준 오류를 표준 출력으로 돌렸고 표준 출력은
 /dev/null을 통해 버려지기 때문에 오류가 화면에 보이지 않는다

 

참고로 &는 백그라운드로 실행하라는 의미다.

 

반응형