Bash 기술: 소개\\\$0,\\$1,\\$2,\$\#,\$@,\$*,\$?의미
$0、$1、$2、$#、$@、$*、$?
등 인 자 를 자주 사용 합 니 다.다음은 이 매개 변수의 의 미 를 구체 적 으로 설명 한다.이러한 명령 을 실행
./test.sh a b c
한다 고 가정 하면 아래 의 매개 변 수 를 사용 하여 값 을 얻 을 수 있 습 니 다.$0
대응./test. sh 이 값 입 니 다../work/test.sh
을 실행 하면 파일 이름 자체 의 부분 만 되 돌려 주 는 것 이 아니 라./work/test. sh 에 대응 합 니 다.$1
는 a, 즉 $1
스 크 립 트 에 전 달 된 첫 번 째 인 자 를 가 져 옵 니 다.$2
는 b, 즉 $2
스 크 립 트 에 전 달 된 두 번 째 인 자 를 가 져 옵 니 다.$3
는 c, 즉 $3
스 크 립 트 에 전 달 된 세 번 째 인 자 를 가 져 옵 니 다.$4
, $5
등 매개 변수의 의 미 는 이에 따라 유추 된다.$#
3 을 얻 을 수 있 습 니 다. 스 크 립 트 에 들 어 오 는 매개 변수 개 수 는 통계 적 인 매개 변 수 는 포함 되 지 않 습 니 다 $0
.$@
는 'a', 'b', 'c', 즉 모든 매개 변수의 목록 을 얻 을 수 있 습 니 다. $0
을 포함 하지 않 습 니 다.$*
도 'a', 'b', 'c' 를 얻 을 수 있 는데 그 값 은 $@
과 같다.다만 "$*"
과 "$@"
는 달 랐 다."$*"
모든 매개 변 수 를 하나의 문자열 로 합 친 다음 "$@"
문자열 매개 변수 배열 을 얻 을 수 있 습 니 다.$?
명령 을 실행 한 후 되 돌아 오 는 값 을 얻 을 수 있 습 니 다.프론트 명령 을 실행 하면 즉시 ./test.sh a b c
으로 이 명령 의 반환 값 을 얻 을 수 있 습 니 다.이 명령 은 시스템 자체 의 명령 일 수도 있 고 셸 스 크 립 트 일 수도 있 으 며 사용자 정의 bash 함수 일 수도 있 습 니 다.시스템 자체 의 명령 을 실행 할 때
$?
이 명령 의 반환 값 에 대응 합 니 다.셸 스 크 립 트 를 실행 할 때 $?
이 스 크 립 트 호출 $?
명령 을 되 돌려 주 는 값 입 니 다.주동 호출 exit
명령 이 없 으 면 기본적으로 0 으로 되 돌아 갑 니 다.사용자 정의 bash 함 수 를 실행 할 때 exit
이 함수 호출 $?
명령 에 대한 값 을 되 돌려 줍 니 다.주동 호출 return
명령 이 없 으 면 기본적으로 0 으로 되 돌아 갑 니 다.다음은 예 를 들 어
return
와 "$*"
의 차 이 를 설명 한다.만약 에 하나의 "$@"
스 크 립 트 가 있다 고 가정 하면 내용 은 다음 과 같다.#!/bin/bash
for arg in "$*"; do
echo "****:" $arg
done
echo --------------
for arg in "$@"; do
echo "@@@@:" $arg
done
이 스 크 립 트 는 각각
testparams.sh
과 "$*"
확 장 된 내용 을 옮 겨 다 니 며 인쇄 합 니 다.실행
"$@"
스 크 립 트 결 과 는 다음 과 같 습 니 다.$ ./testparams.sh This is a test
****: This is a test
--------------
@@@@: This
@@@@: is
@@@@: a
@@@@: test
./testparams.sh
문자열 만 생 성 되 고 for 순환 은 한 번 만 옮 겨 다 니 는 것 을 볼 수 있 습 니 다."$*"
여러 문자열 이 생 겼 습 니 다. for 순환 이 여러 번 반복 되 고 문자열 매개 변수 배열 입 니 다.주의: 들 어 오 는 인자 가 9 개 이상 이면
"$@"
10 번 째 인 자 를 인용 할 수 없고 $10
로 인용 해 야 합 니 다.9 보다 큰 숫자 를 대괄호
${10}
로 묶 어야 한 다 는 것 이다.예 를 들 어 {}
는 10 번 째 매개 변 수 를 가 져 오 는 값 을 표시 하고 ${10}
로 10 번 째 매개 변 수 를 가 져 오지 못 하 는 값 을 가 져 옵 니 다.실제로 $10
는 $10
, 즉 ${1}0
의 값 을 먼저 얻 고 그 다음 에 0 을 따라 가 는 것 과 같다.$1
의 값 이 'first' 라면 $1
의 값 은 'first 0' 이다.man bash 에서 위치 매개 변수 (positional parameters) 에 대한 설명 은 다음 과 같 습 니 다.
Positional Parameters
A positional parameter is a parameter denoted by one or more digits, other than the single digit 0.
Positional parameters are assigned from the shell's arguments when it is invoked, and may be reassigned using the set builtin command. Positional parameters may not be assigned to with assignment statements. The positional parameters are temporarily replaced when a shell function is executed.
When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces.
즉, 마지막 문장 에서 언급 한 바 와 같이 위치 파라미터 가 여러 자리 숫자 로 구 성 될 때 대괄호
$10
로 여러 자리 숫자 를 묶 어야 한다.위치 매개 변수 개수 가 져 오기
bash 에 서 는 들 어 오 는 명령 행 이나 들 어 오 는 함수 의 매개 변수 개 수 를 가 져 올 수 있 습 니 다.주의해 야 할 것 은
{}
통 계 된 매개 변수 개 수 는 스 크 립 트 자체 이름 이나 함수 이름 을 포함 하지 않 습 니 다.예 를 들 어 집행 $#
은 3 이 아니 라 2 이다.man bash 의 설명 을 보면 다음 과 같 습 니 다.
Special Parameters
# Expands to the number of positional parameters in decimal.
이 를 통 해 알 수 있 듯 이
$#
은 실제 적 으로 위치 매개 변수 (positional parameters) 로 확 장 된 개수 이 고 통 계 된 매개 변 수 는 포함 되 지 않 습 니 다 ./a.sh a b
.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.