본문 바로가기

LINUX/Shell Script

16. 변수처리

변수 기본값 설정
 
널 명령어 ( : ) 와 등호 ( = ) 를 사용하여 환경 변수 값이 설정되어 있으면 
 
그 값을 사용하고 설정되지 않은 경우 스크립트에서 정한 기본값을 사용할 수 있다.
 
#!/bin/sh
# param.sh
 
cp largefile.tar.gz $[TMPDIR:=/tmp]
cd $TMPDIR
 
$ ./param.sh
 
Extract files to /var/tmp 
 
 
 

지역변수 설정
 
함수 내부에서 변수를 다룰 때 호출한 곳에 영향을 주지 않도록 지역 변수로 정의하고자 하면 
 
local 이라는 지시어를 같이 사용하면 된다.
 
#!/bin/sh
#local.sh
 
DIR=/var/tmp
 
function ls_home() {
local DIR
DIR=/$1
echo "directory : $DIR"
}
 
$ ./local.sh logDir
 
directory : /logDir
 

변수가 정수값인지 확인
 
expr 로 정수 연산을 할 수 있지만, expr 은 소숫점에 대응하지 않으므로
 
정수가 아닌 값을 사칙연산하면 에러가 발생한다.
 
test 명령어를 사용하여 입력값($1) 이 0과 같은지 -eq 연산자로 확인한다.
 
test 명령어 에러 출력 결과는 필요없으므로 이를 빈 장치에 리다이렉션 시켜서 버리면 (2>/dev/null)
 
결과는 아래와 같으며 결과만 $? 에 저장되게 된다.
 
    명령행 인수가 0과 같으면 0 
    명령행 인수가 0과 같지 않으면 1
    명령행 인수가 0과 비교 불가능한 문자열이면 2
 
따라서 결과 $? 이 2 이면 Non-Integer 이고 아니면 Integer 가 된다.
 
#!/bin/sh
#check.sh
 
test "$1" -eq 0 2>/dev/null
 
if [ $? -lt 2 ]; then
echo "Integer"
else
echo "Non-Integer"
fi
 
$ ./check.sh 1.1
 
Non-Integer
 
 
 
 
 
 
 
 
 

'LINUX > Shell Script' 카테고리의 다른 글

17. sh/Bash 스타트업 파일  (0) 2020.02.04
15. stty ( 암호입력 )  (0) 2020.02.04
14. read ( 사용자 키입력 받기 )  (0) 2020.02.04
13. getops ( 옵션처리 )  (0) 2020.02.04
12. 명령문 인식  (0) 2020.02.04