티스토리 뷰

[Shell Script] Shell 변수[펌]


Shell 변수 $0, $1, ...$N, $*, $@, $# 

도움말 

Shell Script에서 $0, $1, ...$N, $*, $@, $#은 특별한 의미를 갖는다. 이것들이 어떻게 사용되는지 간단한 예제를 통해 익힌다. 

$0 : Script를 실행시킬 때 프로그램의 이름이 포함된 첫 번째 문자열이 저장된다. 
$1, ...$N : argument들이 순서대로 저장된다. 위치 매개변수( Positional Parameter )라고 불리운다. 
$* : 모든 위치 매개변수들로 구성된 단일 문자열 
$@ : 자체로는 $*와 비슷하나 "$@"은 "$*"와  차이가 있다. "$@"은 "$1", ..."$N"과 같다. 
$# : 위치 매개변수의 갯수가 저장된다. 

$! : 가장 최근에 실행했던 백그라운드 PID를 표시



실행 예 
arg.sh 

#!/bin/sh 
echo '$0' $0 

echo '$1' $1 

echo '$2' $2 

echo '$*' $* 

echo '$@' $@ 

echo '$#' $# 

echo '$?' $? 

echo '$$' $$ 


[study@mail variables]$ ./arg.sh a b c d e 

$0 ./arg.sh 

$1 a 

$2 b 

$* a b c d e 

$@ a b c d e 

$# 5 

$? 0 

$$ 9566 

[study@mail variables]$ ./arg.sh 'a b c' d e 

$0 ./arg.sh 

$1 a b c 

$2 d 

$* a b c d e 

$@ a b c d e 

$# 3 

$? 0 

$$ 9567 

[study@mail variables]$ ./arg.sh "a b c" d e 

$0 ./arg.sh 

$1 a b c 

$2 d 

$* a b c d e 

$@ a b c d e 

$# 3 

$? 0 

$$ 9568 

[study@mail variables]$ ./arg.sh "a b c"d e 

$0 ./arg.sh 

$1 a b cd 

$2 e 

$* a b cd e 

$@ a b cd e 

$# 2 

$? 0 

$$ 12974 

arg2.sh 

#!/bin/sh 

echo '$0' $0 

echo '$1' $1 

echo '$2' $2 

echo '$*' $* 

echo '$@' $@ 

echo '$#' $# 

echo '$?' $? 

echo '$$' $$ 

for i in $* 

  do echo item:$i 

done 


for i in $@ 

  do echo item:$i 

done 


[study@mail variables]$ ./arg2.sh "a b c" d e 

$0 ./arg2.sh 

$1 a b c 

$2 d 

$* a b c d e 

$@ a b c d e 

$# 3 

$? 0 

$$ 12980 

item:a 

item:b 

item:c 

item:d 

item:e 

item:a 

item:b 

item:c 

item:d 

item:e 


arg3.sh 

#!/bin/sh 

echo '$0' $0 

echo '$1' $1 

echo '$2' $2 

echo '$*' $* 

echo '$@' $@ 

echo '$#' $# 

echo '$?' $? 

echo '$$' $$ 

for i in "$*" 

  do echo item:$i 

done 

for i in "$@" 

  do echo item:$i 

done 

[study@mail variables]$ ./arg3.sh "a b c" d e 

$0 ./arg3.sh 

$1 a b c 

$2 d 

$* a b c d e 

$@ a b c d e 

$# 3 

$? 0 

$$ 12982 

item:a b c d e 

item:a b c 

item:d 

item:e 

"$@"와 같이 따옴표를 사용하면 따옴표로 값들이 묶여져 처리된다. 

--EOD--


출처 : http://www.itmoa.co.kr/gzboard.php?code=techqna&mode=gz_read&Page=5&no=222

댓글