Shell $0, $#, $*, $@, $?, $$명령 행 인자 사용

5086 단어 Shell$0$#$*$@$?
특수 변수 목록
변량
속뜻
$0
현재 스 크 립 트 의 파일 이름
$n
스 크 립 트 나 함수 에 전달 되 는 인자 입 니 다.n 은 하나의 숫자 로 몇 번 째 인 자 를 나타 낸다.예 를 들 어 첫 번 째 인 자 는$1 이 고 두 번 째 인 자 는$2 입 니 다.
$#
스 크 립 트 나 함수 에 전달 되 는 매개 변수 갯 수 입 니 다.
$*
스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.
$@
스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.따옴표(")에 포 함 될 때$*와 조금 다 르 면 아래 에 설명 하 겠 습 니 다.
$?
이전 명령 의 종료 상태 나 함수 의 반환 값 입 니 다.
$$
현재 Shell 프로 세 스 ID 입 니 다.셸 스 크 립 트 에 대해 서 는 이 스 크 립 트 가 있 는 프로 세 스 ID 입 니 다.
명령 행 인자
스 크 립 트 를 실행 할 때 스 크 립 트 에 전 달 된 매개 변 수 를 명령 행 매개 변수 라 고 합 니 다.명령 행 인 자 는$n 으로 표시 합 니 다.예 를 들 어$1 은 첫 번 째 인 자 를 표시 하고$2 는 두 번 째 인 자 를 표시 하 며 순서대로 유추 합 니 다.
다음 스 크 립 트 를 보십시오:

#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First 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
$*와$@의 차이
$*와$@은 함수 나 스 크 립 트 에 전 달 된 모든 인 자 를 표시 합 니 다.작은 따옴표(")에 포함 되 지 않 을 때"$1","$2","$n"으로 모든 인 자 를 출력 합 니 다.
그러나 따옴표(")에 포 함 될 때"$*"는 모든 인 자 를 하나의 전체 로 하고"$1$2...$n"형식 으로 모든 인 자 를 출력 합 니 다."$@"모든 인 자 를'$1','$2','$n'으로 나 누 어 출력 합 니 다.
아래 의 예 는$*와$@의 차 이 를 뚜렷하게 볼 수 있 습 니 다.

#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
echo "print each param from \$*"
for var in $*
do
echo "$var"
done
echo "print each param from \$@"
for var in $@
do
echo "$var"
done
echo "print each param from \"\$*\""
for var in "$*"
do
echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done
"/test.sh"a","b","c","d"를 실행 하면 다음 결 과 를 볼 수 있 습 니 다.
$*=  a b c d
"$*"= a b c d
$@=  a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
종료 상태
$? 이전 명령 의 종료 상 태 를 가 져 올 수 있 습 니 다.종료 상태 란 이전 명령 이 실 행 된 후 되 돌아 오 는 결과 입 니 다.
종료 상 태 는 숫자 입 니 다.일반적으로 대부분의 명령 이 성공 하면 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
Shell 의${},\#와%%의 범례 를 소개 하고 본 고 는 서로 다른 상황 에서 얻 은 결 과 를 제시 합 니 다.
변 수 를 다음 으로 정의 했다 고 가정 합 니 다.
코드 는 다음 과 같 습 니 다:

file=/dir1/dir2/dir3/my.file.txt
${}로 각각 다른 값 을 바 꿀 수 있 습 니 다:
${file\#*/}:첫 번 째/왼쪽 문자열 삭제:dir 1/dir 2/dir 3/my.file.txt
${file\#\#*/}:마지막/삭제  왼쪽 문자열:my.file.txt
${file\#*.}:첫 번 째 를 삭제 합 니 다.  왼쪽 문자열:file.txt
${file\##*.}:마지막 을 지 웁 니 다.  왼쪽 문자열:txt
${file%/*}:마지막 것 지우 기  /  오른쪽 문자열:/dir 1/dir 2/dir 3
${file%%/*}:첫 번 째/삭제  오른쪽 문자열:(빈 값)
${file%.*}:마지막 것 지우 기  .  오른쪽 문자열:/dir 1/dir 2/dir 3/my.file
${file%%.*}:첫 번 째 삭제  .   오른쪽 문자열:/dir 1/dir 2/dir 3/my
기억의 방법 은:
\#왼쪽 을 제거 합 니 다(키보드 위\#$왼쪽 에 있 습 니 다)
%는 오른쪽 을 제거 합 니 다.(키보드 의%는$오른쪽 에 있 습 니 다)
단일 기 호 는 최소 일치 입 니 다.두 기 호 는 최대 일치 입 니 다.
${file:0:5}:맨 왼쪽 에 있 는 5 개의 바이트 추출:/dir 1
${file:5:5}:다섯 번 째 바이트 오른쪽 에 있 는 연속 5 바이트 추출:/dir 2
변수 값 의 문자열 을 바 꿀 수도 있 습 니 다:
${file/dir/path}:첫 번 째 dir 를 path:/path 1/dir 2/dir 3/my.file.txt 로 대체 합 니 다.
${file//dir/path}:모든 dir 를 path:/path 1/path 2/path 3/my.file.txt 로 대체 합 니 다.
1.스 크 립 트 를 실행 할 때 키 셸 환경 에서 실 행 됩 니 다.스 크 립 트 가 실 행 된 후에 이 하위 셸 은 자동 으로 종 료 됩 니 다.
2.셸 의 시스템 환경 변 수 는 어떻게 해 야 하위 셸 에 복 사 될 수 있 습 니까?(export 로 정 의 된 변수)
3.셸 의 시스템 환경 변 수 는 이 셸 이나 하위 셸 에 만 유효 합 니 다.이 셸 이 끝 날 때 변 수 는 사라 집 니 다(부모 셸 로 돌아 갈 수 없습니다).
4.export 가 정의 하지 않 은 변 수 는 이 셸 에 만 유효 하고 하위 셸 에 대해 서 는 유효 하지 않 습 니 다.
-d:디 렉 터 리 여 부 를 판단 합 니 다.
-z:제 정 된 변수 가 존재 하 는 지 판단 합 니 다.
-f:파일 여 부 를 판단 합 니 다.
-L:심 볼 릭 링크 여 부 를 판단 합 니 다.
-r:제 정 된 읽 을 수 있 는 지 여 부 를 판단 합 니 다.
-s:존재 하 는 대상 의 길이 가 0 인지 판단 합 니 다.
-w:작성 가능 여 부 를 판단 합 니 다.
-x:존재 하 는 대상 이 실 행 될 수 있 는 지 판단 합 니 다.
!:테스트 조건 의 부정 기호
이 파일 들 은 스 크 립 트 프로 그래 밍 에 편 의 를 줄 때 가 많 습 니 다.특히 if 조건문 에 사 용 됩 니 다.
Shell$0,$\#,$*,$@,$?,$$$명령 행 인자 와 사용 하 는 글 은 여기까지 입 니 다.Shell$0,$\#,$*,$@,$?,$$$내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기