쉘 스크립트에서 정해져있는 특수 변수가 있고
각 특수 변수들의 사용법과 의미는 다음과 같다
- $0 : 현재 스크립트 파일 이름
-------------kimchi.sh 파일 안에서 작성----------
#!/bin/bash
echo "이 파일의 이름은 $0입니다."
-------------------------------------------------
$ ./kimchi.sh
이 파일의 이름은 ./kimchi.sh입니다.
파일명 앞에는 실행시킬 때 경로 입력한것에 따라 바뀐다.
현재 경로에 있다는 의미로 쓴 ./ 가 $0 에 같이 나오듯
a/b/c/kimchi.sh 라고 실행하면 $0 도 a/b/c/kimchi.sh 라고 나온다
- $1 : 첫번째 아규먼트
$2는 두번째, $3는 세번째... 10번째부터는 ${10} 처럼 중괄호로 감싸줘야한다
-------------kimchi.sh 파일 안에서 작성----------
#!/bin/bash
echo '$1' $1
echo '$2' $2
echo '$3' $3
echo '$4' $4
-------------------------------------------------
$ ./kimchi.sh a b c
$1 a
$2 b
$3 c
$4
4번째 아규먼트는 넣지 않았으니 결과에서도 아무것도 나오지 않는다.
- $# : 총 아규먼트 개수
-------------kimchi.sh 파일 안에서 작성----------
#!/bin/bash
echo $#
-------------------------------------------------
$ ./kimchi.sh a b c
3
위와 같이 입력하면 kimchi.sh 뒤에 3개의 아규먼트가 있으니 $# 의 결과가 3이 나온다.
- $@ : 전체 아규먼트를 하나의 문자열로 반환
- $* : 전체 아규먼트를 공백' '으로 구분해 반환
-------------kimchi.sh 파일 안에서 작성----------
#!/bin/bash
echo '$@' $@
echo '$*' $*
echo
echo '이것은 $@'
for param in "$@"
do
echo '-' $param
done
echo
echo '이것은 $*'
for param in "$*"
do
echo '-' $param
done
-------------------------------------------------
$@ a b c
$* a b c
이것은 $@
- a
- b
- c
이것은 $*
- a b c
둘다 a b c 로 출력된 결과물이 같게 보이는데
for문에 돌려보면 $@는 배열이 3개라 3번 반복되어 3줄이 출력되었고
$*은 'a b c' 통으로 하나의 문자열이라 한번만 출력되었다.
- $? : 바로 전 명령의 실행 상태
$? 가 실행되기 바로 전의 실행한 명령이 올바르게 동작되고 종료되었다면 0이 출력되고
문제가 있으면 127이 표기 된다.
#!/bin/bash
VAR=1
echo '$?' $?
# 잘못된 변수선언
-VAR=1
echo '$?' $?
# 없는 파일을 실행
./kimchi2.sh
echo '$?' $?
------------------------------------------------------
$? 0
workspace/kimchi.sh: line 5: -VAR=1: command not found
$? 127
workspace/kimchi.sh: line 7: ./kimchi2.sh: No such file or directory
$? 127
- $$ : 현재 스크립트의 PID
$ echo $$
12345
$ echo $$
12346
- $! : 마지막으로 실행된 백그라운드 PID
'리눅스 (Linux)' 카테고리의 다른 글
리다이렉션 (0) | 2021.12.19 |
---|---|
명령어 치환 (Command Substitution) (0) | 2021.12.19 |
특수 권한 (0) | 2021.12.19 |
리눅스 - shell script 변수 (0) | 2021.12.16 |
리눅스 - Shell Script (0) | 2021.12.16 |
댓글