변수

그냥 변수명을 적으면 된다. 변수의 타입이나 형을 명시하지 않는다.

변수에 값을 할당하지 않아도 특별한 문제는 발생하지 않으며, NULL로 초기화하고 나중에 값을 할당하려고 한다면 다음과 같이 한다.

name=

변수에 값을 할당할 때는 = 기호를 사용하는데 = 사이에 공백을 넣으면 안된다.

name=JUNGJH # 맞다.

name = JUNGJH # 틀리다.

만일 입력하려는 이름에 공백이 있다면 다음처럼 한다.

name="JUNG J H"

만일 인수로 입력되는 값이 있을 때 이를 변수로 받는 방법은 $숫자 이다. , $1은 첫번째 인수이고$2는 두번째 인수이다.

변수의 내용을 출력하려면 echo를 사용한다. 이때 변수임을 알리기 위해서 $를 넣는다.

echo $name

변수에 와일드 문자를 넣어서 사용할 수도 있다.

filename=*.sh

echo $filename # 확장자가 sh 되어 있는 파일들의 목록이 나온다.

변수를 이용하여 스트링의 일부를 변경할 수도 있다. 예를 들어 option이라는 변수에 l를 입력한 후ls ?“$option 을 사용하면 ls ?l 과 동일한 문장이 된다.

<. ShellTest2.sh>

스크립트 파일 내부에서 개발자가 unset 키워드로 변수를 제거할 수 있다.

name="Jung JH"

unset name

newname=$name # newname= 같다.

쉘 스크립트에서도 상수를 만들 수 있다. 이때 사용되는 키워드는 readonly이다.

readonly만 쓰면 읽기전용으로 된 상수들을 모두 화면에 표시한다.

Name="Jung JH"

Readonly name # 후로는 값을 바꿀 없다.

쉘 스크립트에서는 쉘 전체가 사용하는 환경변수도 일반 변수와 똑 같은 방법으로 사용할 수 있다.

변수에 값을 할당할 때 입력줄에서 입력받은 내용을 할당하는 방법이 있다. , 스크립트가 실행되는 중간에 변수에 할당할 내용을 사용자로부터 입력받은 후 그 내용을 할당하는 것이다.

이때 사용하는 키워드가 read인데 이 키워드와 변수를 함께 적으면 그 라인이 실행될 때 사용자로부터 입력할 것을 요청하게 된다.

<Grep.sh>

#!/bin/sh

echo "grep 사용될 옵션 입력, -l 또는 -s 입력해주세요."

read option1

echo "검색하고자 하는 문장을 입력해주세요"

read option2

grep $option1 $option2 *

쉘에서 사용되는 특정 키워드는 다음과 같다.

$# - 명령입력 라인에서 입력된 인수의 개수를 가지고 있다.

$* - 명령입력 라인에서 입력된 전체의 내용을 포함한다. , $1 ~ $n을 모두 합친것과 같다.

$$ - 쉘 프로그램이 실행되면서 사용된 프로세스의 ID 값을 가진다.

$! - 쉘 프로그램이 실행시킨 백그라운드 프로세스의 ID 값을 가진다.

<. shellTest.sh>

위의 키워드를 사용한 다양한 응용을 한다.

set 명령어를 이용하면 현재 쉘에서 사용되고 있는 변수들의 리스트를 확인할 수 있다.

<. shellTest4.sh>

쉘의 환경변수를 몇가지 확인한다.

쉘에서 변수를 사용할 때 변수에 값을 할당된 경우에는 변수가 가진 값을 사용하고, 그렇지 않으면 디폴트의 다른값을 활용하는 방법이 있다.

더 나아가 지정한 내용을 값이 할당되지 않은 변수속에 할당하는 방법도 있다.

${X:-Y} # X 값이 있으면 그대로, 그렇지 않으면 Y 사용, X 변동없음

${X:=Y} # Y 사용되고 X Y 할당

${X:?에러메시지} # X 값이 없으면 에러메시지와 함께 종료

<. shellTest4.sh>

위의 예를 활용한다.