Shell 프로 그래 밍 의 매개 변수 참조
$0 은 터미널 창 에서 실행 되 는 스 크 립 트 의 이름 을 표시 합 니 다./start. sh 는 $0 의 값 이 start. sh 입 니 다.
$n (n = 1, 2, 3,...) 은 스 크 립 트 를 실행 할 때 뒤에 따 르 는 인자 입 니 다. 예 를 들 어 터미널 창 에서 실 행 됩 니 다./start. sharg 1 arg 2 는 $1 의 값 이 arg 1 이 고 $2 의 값 은 arg 2 입 니 다.
$\# 실행 스 크 립 트 뒤에 따 르 는 매개 변수 개 수 를 표시 합 니 다. 스 크 립 트 자 체 를 포함 하지 않 습 니 다. 예 를 들 어 위 에서 열거 한 두 번 째 예 에서 $\# 의 값 은 2 입 니 다.
$$는 이 스 크 립 트 가 실 행 될 때 운영 체제 가 배 정 된 PID, 즉 프로 세 스 ID 를 표시 합 니 다.
$!마지막 으로 백 스테이지 에서 실 행 된 프로 세 스 를 나타 내 는 PID 입 니 다.
$* 스 크 립 트 뒤의 모든 인 자 를 표시 합 니 다. 이 인 자 는 단어 로 사 용 됩 니 다.
$@ 은 $* 와 같은 뜻 이지 만 매개 변 수 는 단어 가 아 닌 단독 단어 로 사 용 됩 니 다.
$@ 과 $* 의 차 이 는 두 따옴표 로 묶 일 때 만 나타 납 니 다. 그렇지 않 으 면 두 사람의 효 과 는 같 습 니 다.
$?스 크 립 트 에서 이전 명령, 스 크 립 트 또는 함 수 를 실행 한 결 과 를 표시 합 니 다. 보통 올 바른 종료 여 부 를 판단 하 는 데 사 용 됩 니 다. 0 은 올 바른 것 을 표시 하고 0 이 아 닌 것 은 실행 과정 오 류 를 표시 합 니 다.
다음은 구체 적 인 코드 를 보고 출력 결 과 를 살 펴 보 겠 습 니 다. $@ 과 $* 의 공통점 을 살 펴 보 겠 습 니 다.
#!/bin/bash
echo $0
echo $#
echo $$
ls /home/hadoop > /dev/null
echo $?
i=1
for arg in "$*"
do
echo "arg$i=$arg"
let i=i+1
done
echo
i=1
for arg in "$@"
do
echo "arg$i=$arg"
let i=i+1
done
echo
i=1
for arg in $*
do
echo "arg$i=$arg"
let i=i+1
done
[hadoop@hadoop code]$ ./shellArg.sh arg1 arg2 arg3 agr4 arg5 arg6 arg7 arg8 arg9 arg10 arg11
./shellArg.sh
11
3280
0
arg1=arg1 arg2 arg3 agr4 arg5 arg6 arg7 arg8 arg9 arg10 arg11
arg1=arg1
arg2=arg2
arg3=arg3
arg4=agr4
arg5=arg5
arg6=arg6
arg7=arg7
arg8=arg8
arg9=arg9
arg10=arg10
arg11=arg11
arg1=arg1
arg2=arg2
arg3=arg3
arg4=agr4
arg5=arg5
arg6=arg6
arg7=arg7
arg8=arg8
arg9=arg9
arg10=arg10
arg11=arg11
$* 따옴표 가 없 을 때 $@ 과 같은 효 과 를 볼 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.