Shell 프로 그래 밍 의 매개 변수 참조

최근 에 Nutch - 2.2.1 을 배우 고 있 습 니 다. crawl 과 nutch 스 크 립 트 를 읽 을 때 달러 기호 $뒤에 숫자, 물음표 와 같은 표현 방식 을 만 났 습 니 다. 뒤에 숫자 와 같은 상황 에 대해 조금 알 고 있 었 습 니 다. 스 크 립 트 가 실 행 될 때 뒤 꿈 치 를 나타 내 는 매개 변수 입 니 다. 예 를 들 어 0 은 스 크 립 트 의 이름 을 나타 내 고 1 은 첫 번 째 매개 변 수 를 나타 내 며 2 는 두 번 째 매개 변 수 를 나타 내 는 등 입 니 다.그러나 물음표, 느낌표, 별표 에 대해 서 는 잘 모 르 겠 습 니 다. 인터넷 에서 글 을 찾 아 보 았 지만 코드 참고 가 부족 해서 테스트 스 크 립 트 를 작 성 했 습 니 다. 기본적으로 스 크 립 트 매개 변수의 사용 방식 을 포함 합 니 다.다음은 스 크 립 트 매개 변수의 의 미 를 먼저 열거 한 다음 에 스 크 립 트 를 실행 하여 실제 실행 상황 을 봅 니 다.
 
$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

$* 따옴표 가 없 을 때 $@ 과 같은 효 과 를 볼 수 있 습 니 다.

좋은 웹페이지 즐겨찾기