System Admin

본문 바로가기
사이트 내 전체검색


RedHat Linux >> System Administration for Redhat Linux
[목차]
제2장 쉘 프로그래밍

    3. 쉘 변수들

쉘에서 사용되는 변수는 문자, 숫자, _(언더바)로 구성될 수 있지만, 시작은 반드시 문자나 _로 시작되어야 합니다. 쉘에서 사용되는 변수의 모든 값은 문자열로 처리되기 때문에 따로 유형을 선언해 줄 필요가 없습니다. 정의 되지 않은 변수의 초기값은 널(null) 문자열입니다. 쉘에서 사용하는 변수는 크게 3가지로 나눌 수 있습니다.

  • 사용자 정의 변수 : 사용자가 임의로 지정해서 사용하는 변수입니다.
  • 시스템 정의 변수(표준 변수) : 쉘이 자동적으로 지정하는 변수, 사용자는 참조만 가능합니다.
  • 특수 변수(기호변수) : 쉘이 특수하게 해석하는 변수입니다.

가. 사용자 정의 쉘 변수

쉘 명령어에 사용되는 변수는 다음과 같은 형식으로 정의 하여 사용합니다.

   변수명 = 문자열 또는 $변수명

쉘 변수명은 첫 자가 특수문자가 아닌 영문, 숫자이어야 하고 연속된 문자열이어야합니다. 두 개 이상의 단어를 묶어 지정하려면, " "를 사용합니다. 또 사전에 정의한 변수를 쉘 프로그램에서 호출하거나 사용하려면 특수 기호인 $를 변수면 앞에 붙여 그 단어가 쉘 변수임을 나타내도록 해야 합니다. 예를 들면 다음과 같습니다.

# ec="electronic commerce"
# echo $ec
electronic commerce

# plus=3+4
# echo $plus

3+4

#

다음내용은 test1.sh로 저장해서 실행해 보십시오

# vi test1.sh

greeting="How are You"
echo $greeting
echo "greeting"
echo '$greeting'
echo \$greeting
echo Enter your name :
read name
echo $greeting $name
exit 0

[root@w3 /root]# sh test1.sh
How are You
greeting
$greeting
$greeting
Enter your name :
Lee jin kwan
How are You Lee jin kwan
[root@w3 /root]#

 

나. 시스템 정의 쉘 변수(환경변수)

사용자 로그인을 하면, 자동으로 지정되는 여러 변수가 있습니다. 이 변수 들은 쉘에서 사용되기도 하고, 기타 여러 프로그램에서 사용됩니다.

이 변수들은 각각 고유한 이름을 가지며 그 변수 이름과 함께 고유한 변수값을 가집니다. 이것은 일반적으로 사용자마다 다르며, 이것이 바로 각 사용자의 작업 환경이 됩니다.

이렇게 미리 정의된 변수들도 쉘 스크립트에서 사용할 수 있습니다. 또한 쉘 스크립트에서 이런 변수들과 그 값을 사용하려면 먼저 그 변수가 export명령으로 미리 지정되어야 합니다. 일반적으로 로그인 과정에서 자동으로 처리됩니다.

사용자는 set 명령을 사용해 모든 현재 변수의 전체 리스트를 볼 수 있습니다.

# set | more

환경변수 전체를 보는 명령은 다음과 같습니다.

# env | more

 

---------------------------------------------------------------------------
환경변수     설명
---------------------------------------------------------------------------
$HOME        사용자의 홈디렉토리명을 포함합니다. 로그인시 지정되며 UNIX파일
             시스템내에 저장된 파일을 액세스할 필요가 있는 프로그램에 의해
             사용됩니다.(.profile, .login, .cshrc, 등)
---------------------------------------------------------------------------
$LOGNAME     사용자의 로그인명입니다.($USER)
---------------------------------------------------------------------------
$MAIL or     메일 도착을 알고자 할 때 사용됩니다. 둘 중 하나만 지정되어야
$MAILPATH    합니다. $MAIL이 지정되면, 메일이 도착할 파일명이 지정되어야 합
             니다. $MAILPATH가 지정되면 콜론(:)으로 분리된 메일 파일의 리스
             트여야 합니다. 이들 변수는 메일 프로그램이 email을 어디에 놓아
             야 하는지를 지정하지는 않지만, 새로운 메일이 도착하면 Shell이
             어디를 찾아야 하는지를 지정합니다.
---------------------------------------------------------------------------
$MAILCHECK   메일 파일의 검사간격을 초단위로 지정합니다.
---------------------------------------------------------------------------
$SHELL       로그인 쉘명입니다. vi 텍스트 에디터와 같이 프로그램을 빠져나가
             지 않고도 또 다른 대화형 SHELL을 부르기를 원하는 프로그램에서
             사용됩니다.
---------------------------------------------------------------------------
$PS1         쉘이 사용할 첫 번째 프롬프트 스트링으로 디폴트는 $입니다.
---------------------------------------------------------------------------
$PS2         두 번째 프롬프트 스트링입니다. 명령이 완전히 끝나지 않고 쉘이
             또다른 입력 행을 요구할 때, 사용되는데, 디폴트는 >입니다.
---------------------------------------------------------------------------
$TERM        사용자의 터미널형을 포함합니다. vi 같은 어떤 명령은 정확한 결과
             를 내기 위해 사용중인 터미널의 종류가 무엇인지를 알 필요가 있습
             니다.
---------------------------------------------------------------------------
 

 

다. 특별한 쉘변수

다음은 쉘에서 특별한 의미로 사용되는 변수 이름들입니다. 환경변수의 특별한 형태라고 생각하면 됩니다.

---------------------------------------------------------------------------
이름      설명
---------------------------------------------------------------------------
$1~$9     각 명령행 인자
$0        쉘 스크립트 자체, 또는 그 명령 자체
$#        명령행에서 주워진 명령행 인자의 개수
$?        가장 최근에 마친 명령의 return값이 10진수 문자열로 저장되는 변수.
          보통 한 명령이 아무 오류 없이 성공적으로 끝나면 이 값은 0 이고,
          그렇지 않으면 0 이외의 값이 지정됩니다.
$$        현재 쉘의 프로세스 번호 - 보통 고유한 파일이름을 만들려고 할 때
          사용됩니다.
$!        현재 background로 실행되는 마지막, 명령의 프로세스 번호
$-        현재 쉘이 호출될 때 사용한 옵션들
$*        명령행 인자의 모든 것
$@        위 변수와 똑같지만, 따옴표 처리 문제에서 다름
---------------------------------------------------------------------------

[ $*과 $@ 변수의 차이점 ]

"$*" 이렇게 변수가 따옴표로 묶여지면, 쉘에서의 공백 문자 식별로 무조건 처리하는 것으로 '1 2' 3 같은 명령행 인자가 있다면, 이것을 "1 2 3" 이렇게 하나의 인자로 처리합니다.

"$@" 이렇게 변수가 따옴표로 묶여지면, '1 2' 3같은 명령행 인자가 있다면, 이것을 "1 2" "3" 이렇게 두 개의 인자로 처리합니다.

 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.