728x90

변수 치환 (Variable Substitution)

 

variable1이 변수이름이라면 $vairable1은 그 변수가 갖고 있는 데이타 아이템인 값을 나타냅니다.

 

변수를 선언하거나 할당할 때, unset 될 때, export 될 때에 $없이 쓰입니다.

 

변수 할당은 =을 쓰거나( ex) var1=27), read문에서 쓰이거나, 루프문의 처음에서 쓰입니다.( ex) for var2 in 1 2 3 )

 

참조되는 값을 큰따옴표(" ")로 묶어도 변수 치환이 일어나는 것을 막지 못합니다. 이를 부분적 쿼우팅(partial quoting)이나 "약한 쿼우팅(weak quoting)"이라고 합니다. 작은따옴표를 쓰게 되면 변수 이름이 그냥 문자 그대로 해석되어 아무런 일도 일어나지 않습니다. 이를 완전한 쿼우팅(full quoting)이나 "강한 쿼우팅(strong quoting)"이라고 합니다.

 

$variable ${variable}을 짧게 쓴 표현임에 주의하세요. 

$variable라고 써서 에러가 났을 경우에는 긴 형태로 써주면 해결될수도 있음

1. 초기화하지않거나 ,널값을 갖도록 세팅하거나 unset한경우

변수의 내용을 출력한다 하더라도 출력되지않습니다.

 

2. ' ' 작은 따옴표로 변수를 쿼우팅해주면 "$"가 문자 그대로 해석되기 때문에 변수 참조가 일어나지 않습니다.

 

변수 할당 (Variable Assignment)

 

=

ㄴ할당 연산자(앞 뒤에 공백이 있으면 안됨)

 

1. a=879

 

2. let a=16+5


3.

echo -n "\"a\" 를 넣으세요."

read a

 

4. 

for a in 7 8 9 11

do

done

 

 

# ---------------------------------------------------

a=23

echo $a

b=$a

echo $b

 

 

a=`echo Hello!` # echo 명령어의 결과를 'a'로 할당

echo $a

 

a=`ls -l` # 'ls -l' 명령어의 결과를 'a'로 할당

echo $a

 

exit 0

 

 

* Bash 변수는 타입이 없다 (untyped) *

Bash는 다른 프로그래밍 언어들과는 달리, 변수를 "타입"으로 구분하지 않습니다.

Bash 변수는 본질적으로 문자열이지만 Bash가 문맥에 따라서 정수 연산이나 변수를 비교해줍니다.

 

이 동작을 결정짓는 요소는 그 변수의 값이 숫자로만 이루어져있느나 아니냐로 구분한다고한다.

 

 

위에서 변수에 타입이 없다고했는데 형변환하는게 있으니.. 헷갈린다

 

특수한 변수 타입

 

지역 변수 

ㄴ 지역변수는 코드 블럭 [ ex) { } ] , 함수 [ ex) function function_name { comand... } 에서만 나타납니다.

 

환경 변수

ㄴ 쉘의 동작과 사용자 인터페이스에 영향을 미치는 변수

   참고 : 아주 일반적인 상황에서는 각 프로세스는 자신이 참조할 정보들을 담고 있는 변수들의 그룹인 "환경"이란 것을 갖고 있습니다. 이런 관점에서 보면, 쉘도 다른 프로세스들과 다를 바 없습니다.

 

쉘은 자신이 시작될 때마다 자신의 환경 변수에 대응하는 쉘 변수를 만들어 냅니다. 쉘 변수를 업데이트하거나 새롭게 추가하면 쉘은 자신의 환경 변수를 업데이트 시키고 쉘의 모든 자식 프로세스(쉘에서 실행시킨 명령어들)는 그 환경을 물려 받습니다.

 

위치 매개변수

 

$0 : 스크립트이름 

ㄴ 현재 디렉토리를 나타내는 ./ 가 추가되어있음

순수한 스크립트 명만 추출해내고싶다면

 

`basename $0` 

ㄴ 경로명을 떼어낼수 있음

 

$1 , $2 $3 .... ${10}

ㄴ $9보다 큰 위치 매개변수는 {중괄호}로 감싸야 한다.

 

------------------------------------------------------------------

 

variable1_=$1_

ㄴ이런식으로 변수를 위치매개 변수를 통해 초기화한다면 위치 매개변수가 비어있더라도 에러를 막을수 있음

 

# 좀 더 확실한 방법은 원하는 위치 매개변수가 넘어왔는지 테스트를 해보는 것이다.

 

shift 명령어는 위치 매개변수를 왼쪽으로 한단계씩 이동 시킨다.

$1 <--- $2, $2 <--- $3, $3 <--- $4, 등등.

원래의 $1 은 없어지지만 $0 은 바뀌지 않습니다. 위치 매개변수가 많이 필요하다면 {중괄호} 표기법으로 가능하지만(예 5-5 참고), shift 를 써서 예전 10개를 쓸 수 있습니다..

728x90

'쉘스크립트' 카테고리의 다른 글

8~/ 9~/ 연산자, 변수 재검토  (0) 2022.03.03
7~ 테스트  (0) 2022.03.03
6~ / #쿼우팅  (0) 2022.03.02
2.1~2.2 / 3. / 4. # 기초단계 종료상태 특수문자  (0) 2022.03.02
1-1~2 소개 , #!  (0) 2022.03.02

+ Recent posts