Embedded Linux

리눅스 shell : [ 1 ] 변수와 연자자, 특수 문자

작성자 임베디드코리아 작성일15-11-23 09:47 조회5,104회 댓글0건
■ 변수 사용
      Shell에 있어 변수의 사용은 매우 간단히 정의
                    변수명=값
      ▶ 주의 할 것은 '=' 사이의 좌우 공백이 없어야 함
      ▶ 대소문자 구별
      ▶ 변수의 이름으로써 영문자, 숫자 그리고 언더바(_)가 사용된다.
      ▶ 숫자형 변수와 문자형 변수의 구별이 없음
      ▶ 변수의 내용을 사용할 때는 변수명 앞에 '$'를 붙인다.
      EX)
          #!/bin/sh
          # 변수에 값을 할당한다.
          a="Embeddedkorea.com"
          # 이제 a라는 변수에 등록된 값을 화면에 출력한다.
          echo "a is : $a"

    EX)
            GLORY=embedded
            echo $GLORY
            echo "$GLORY"
            echo '$GLORY'
            echo /$GLORY
            echo '$GLORY = '$GLORY
            exit 0

■. 숫자 계산을 위한 연산자
      expr : 숫자 계산
      + : 더하기      Ex) echo `expr 10 + 20` => 30
      - : 빼기          Ex) echo `expr 20 - 10` => 10
    \* : 곱하기('\*'로 사용)    Ex) echo `expr 11 \* 11` => 121
      /: 나누기      Ex)  echo `expr 10 / 2` => 5
    %: 나누기를 한 수 나머지 값  Ex) echo `expr 10 % 4` => 2
    = : 대입(지정)    Ex) a=$b b의 값은 a에 저장된다

    <주 의>
      expr로 지정하는 경우 역작은따옴표( ` )를 사용 : 작은 따옴표( ' )가 아님 !
      연산자 *와 괄호 앞에는 역슬래스(\)를 같이 사용
      연산자와 숫자, 변수, 기호 사이에는 space가 존재
    Ex)
          #!/bin/sh
          num1=10
          num2=5
          num3=`expr $num1 + $num2`
          num4=`expr $num1 - $num2`
          echo $num3 $num4

■ 변수의 값이 덮어 쓰기되는 것을 방지하기 위해서는 readonly를 사용한다.
    - 변수를 unset으로 삭제할 수 있다 (그러나 readonly변수를 삭제하는 것을 불가능하다). 
    EX)
          !/bin/sh
          var="변수1"
          VaR_2="변수2"
          echo "Var_2=$VaR_2"
          VaR_2="VaR_2가 변경됐다"
          echo ${VaR_2}

          readonly var
          var="readonly var를 바꿔보자"

■ 특수 문자
    * ? [ ' " ` \ $ ; & ( ) | ~ < > # % = 스페이트 탭 개행는 쉘 스크립트의 특수 문자이다.
    문자열로써 사용할 때는 \를 앞에 쓴 다음에 쓴다.

■ 특별한 변수
    ▷ $0  : 스크립트명
    ▷ $1 ~ $9 : 인수, 첫 번째의 인수는 $1, 2번째 인수는 $2로 액세스
    ▷ $#  :  스크립트에 전달된 인수의 수
    ▷ $*  : 모든 인수를 모아 하나로 처리
    ▷ $@  : 모든 인수를 각각 처리
    ▷ $?  : 직전에 실행한 커맨드의 종료 값(0은 성공, 1은 실패)
    ▷ $$  : 이 쉘 스크립트의 프로세스 ID
    ▷ $!  : 마지막으로 실행한 백그라운드 프로세스 ID

    Ex)
          #!/bin/sh
          echo "\$0(스크립트 명): $0"
          echo "\$1(1번째 인수): $1"
          echo "\$2(2번째 인수): $2"
          echo "\$#(인수의 수): $#"
          echo "\"\$*\": \"$*\""
          echo "\"\$@\": \"$@\""
          VAR="exit값은0이 된다."
          echo $?

■ 변수 값의 치환
    ▶ ${var} : 변수 값을 바꿔 넣는다.  
    ▶ ${var:-word} : 변수가 아직 세팅되지 않거나 공백 문자열의 경우 word를 반환한다. var에는 저장되지 않는다.
    ▶ ${var:=word} : 변수가 아직 세팅되지 않거나 공백 문자열의 word를 반환한다. var에 저장된다.
    ▶ ${var:?word} : 변수가 아직 세팅되지 않거나 공백 문자열의 경우 치환에 실패하고, 스탠다드 에러에 에러가 표시된다.
    ▶ ${var:+word} : 변수가 세팅되지 않은 경우 word가 반환된다. var에는 저장되지 않는다.