Unix / Linux-특수 변수
이 장에서는 Unix의 특수 변수에 대해 자세히 설명합니다. 이전 장 중 하나에서 변수 이름에 영숫자가 아닌 특정 문자를 사용할 때주의하는 방법을 이해했습니다. 이는 해당 문자가 특수 Unix 변수의 이름에 사용되기 때문입니다. 이러한 변수는 특정 기능을 위해 예약되어 있습니다.
예를 들어 $ 문자는 현재 쉘의 프로세스 ID 번호 또는 PID를 나타냅니다.
$echo $$
위의 명령은 현재 쉘의 PID를 씁니다.
29949
다음 표는 쉘 스크립트에서 사용할 수있는 여러 특수 변수를 보여줍니다.
Sr. 아니. | 변수 및 설명 |
---|---|
1 | $0 현재 스크립트의 파일 이름입니다. |
2 | $n 이러한 변수는 스크립트가 호출 된 인수에 해당합니다. 여기n 인수의 위치에 해당하는 양의 십진수입니다 (첫 번째 인수는 $ 1, 두 번째 인수는 $ 2 등). |
삼 | $# 스크립트에 제공된 인수의 수입니다. |
4 | $* 모든 인수는 큰 따옴표로 묶여 있습니다. 스크립트가 두 개의 인수를 받으면 $ *는 $ 1 $ 2와 같습니다. |
5 | $@ 모든 인수는 개별적으로 큰 따옴표로 묶여 있습니다. 스크립트가 두 개의 인수를 받으면 $ @는 $ 1 $ 2와 같습니다. |
6 | $? 마지막으로 실행 된 명령의 종료 상태입니다. |
7 | $$ 현재 쉘의 프로세스 번호입니다. 쉘 스크립트의 경우 실행중인 프로세스 ID입니다. |
8 | $! 마지막 백그라운드 명령의 프로세스 번호입니다. |
명령 줄 인수
명령 줄 인수 $ 1, $ 2, $ 3, ... $ 9는 위치 매개 변수이며 $ 0은 실제 명령, 프로그램, 쉘 스크립트 또는 함수를 가리키고 $ 1, $ 2, $ 3, ... $ 9는 명령.
다음 스크립트는 명령 줄과 관련된 다양한 특수 변수를 사용합니다-
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
다음은 위의 스크립트에 대한 샘플 실행입니다.
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
특수 매개 변수 $ * 및 $ @
한 번에 모든 명령 줄 인수에 액세스 할 수있는 특수 매개 변수가 있습니다. $* 과 $@ 둘 다 큰 따옴표로 묶지 않는 한 동일하게 작동합니다. "".
두 매개 변수 모두 명령 줄 인수를 지정합니다. 그러나 "$ *"특수 매개 변수는 전체 목록을 공백이있는 하나의 인수로 취하고 "$ @"특수 매개 변수는 전체 목록을 취하여 별도의 인수로 분리합니다.
$ * 또는 $ @ 특수 매개 변수를 사용하여 알 수없는 수의 명령 줄 인수를 처리하기 위해 아래와 같이 쉘 스크립트를 작성할 수 있습니다.
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
다음은 위의 스크립트에 대한 샘플 실행입니다.
$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old
Note − 여기 do...done 다음 튜토리얼에서 다룰 일종의 루프입니다.
종료 상태
그만큼 $? 변수는 이전 명령의 종료 상태를 나타냅니다.
종료 상태는 모든 명령이 완료 될 때 반환되는 숫자 값입니다. 일반적으로 대부분의 명령은 성공한 경우 0, 실패한 경우 1의 종료 상태를 반환합니다.
일부 명령은 특정 이유로 추가 종료 상태를 반환합니다. 예를 들어 일부 명령은 오류 유형을 구분하고 특정 유형의 오류에 따라 다양한 종료 값을 반환합니다.
다음은 성공적인 명령의 예입니다-
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$