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,$\#,$*,$@,$?,$$$내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.