본문 바로가기
카테고리 없음

리눅스 쉘스크립트 문법 정리

by 문자메일 2018. 11. 12.

리눅스시험전워드.docx

if [ ! "$name" ]

 

result=$(grep $name phonebook)

 

if [ "result" ]

 

echo "$name $tel" >> phonebook

 

grep -v "$name" phonebook > /tmp/phonebook

mv /tmp/phonebook phonebook

 

쉘 스크립트는 타입이 존재하지 않으며 사용되는 모든 데이터는 기본적으로 문자열로 처리됨

변수를 사용하려면 반드시 달러 기호를 사용해야 하며 변수를 선언할 때는 달러 기호를 사용하면 안됨

 

쉘 스크립트 작성법

 

#!/bin/bash 해시뱅과 스크립터를 실행할 인터프리터 명시해야 함

 

read -p "name: " name //// 변수이름 안적을 시 $REPLY 내장 변수에 자동 저장

 

산술연산

변수에 저장된 값은 기본적으로 문자열이므로 산술 연산을 위한 별도의 문법이 필요

정수 연산을 하려면 먼저 정수형 변수를 선언해야 한다.

정수형 변수를 선언하는 명령어는

1 declare -i, 2 let

result="5 + 5" "큰 따옴표를 사용하면 공백은 분리자로 사용되지 않으므로 사용 가능"

동등 비교를 제외한 나머지 연산자에 대해서는 반드시 백슬래시나 따옴표를 사용해야 한다.

=>리다이렉션 연산자로 인식되지 않게 하기 위하여 필요함

let ret=2\>0

let "ret = 2 <= 0"

 

bash는 계산을 조금 더 쉽게 처리할 수 있도록 3가지 방법을 제공

1. expr

2. []

3. (( ))

 

expr

result=$(expr 2 + 2)

rsult=$(expr $val1 \* $val2)

 

[ ] - expr과 차이점은 소괄호 -> 대괄호, expr 안쓴다는 것, 대괄호 안 변수는 달러, 리다이렉트 할 때 \안붙여도 된다.

result=$[2 * 2]

result=$[2 ** 4]

 

var1=2

var2=2

result=$[var1 * var2]

 

echo $[var1 > var2] #0

 

(( ))

산술 연산을 위한 전용 문법으로 문자열은 다루지 않고 오직 숫자만 처리함

따라서 이중 소괄호 안에 알파벳으로 된 단어가 나타나게 되면 쉘은 이를 변수로 해석하며 이러한 특징 때문에 이중 소괄호 안에서 변수를 사용할 경우, $ 문자를 사용하지 않아도 됨

큰 따옴표나 작은 따옴표를 사용할 수 없음

num=0

((num = num + 1))

((num += 1))

((++num))

((num = 2 ** 10))

((ret = 10 > 1))

((ret = 10>= 1))

 

치환-----

문자열 길이 계산

${#변수}

 

 

 

---------분기문

if [ expression ]

중요한점 : 괄호의 앞과 뒤에는 공백이 있어야 함

if [ $REPLY -eq 0 ] ; then

fi

 

 

if [ $REPLY -gt 0 ]; then

elif [ ]; then

else

fi

 

산술명령식

: 연산 수행을 편리하게 함

if (( (($REPLY % 2)) == 0 )); then

else

fi

 

합성 명령어

사용방법 : [[ expression ]]

if [[ ! "$REPLY" =~ ^-?[0-9]+$ ]]; then

fi

 

 

case $REPLY in

           0)

           exit;;

           1)

           break

           2)

           *)

 

반복문

while true; do

done

 

until (( i > 5 )); do

done

 

for i in 1 2 3 4 5 6 7 8 9; do

done

for (( i=0l i<5; i++ )); do

done

 

 

배열

arr1=(1024 "one" $(pwd) $USER)

arr3[0]="zero"

arr3[1]="one"

arr3[2]="two"

 

원소 참조 방법 : ${name[index]}

 

 

함수

print_world(){

           echo "hello"

           return

}

 

print_world

함수 사용시 전달된 값이 순서대로 저장됨

echo $1 $2 $3

매개 변수를 반복적으로 처리하기 위해 shift 명령어를 제공

shift 명령은 위치 매개변수의 전체 값들을 하나씩 왼쪽으로 이동시키는 명령


댓글