[bash] 특수 달러 기호 쉘 변수는 무엇입니까?

Bash에는 일관되고 의미있는 특수 값을 보유하는 여러 변수가있는 것으로 보입니다. 예를 들어

./myprogram &; echo $!

배경 프로세스의 PID를 반환합니다 myprogram. $?현재 TTY라고 생각되는 다른 사람들을 알고 있습니다 . 다른 사람이 있습니까?



답변

  • $1, $2, $3, …있는 위치 파라미터 .
  • "$@"는 모든 위치 매개 변수의 배열과 유사한 구성입니다 {$1, $2, $3 ...}.
  • "$*"모든 위치 매개 변수의 IFS 확장입니다 $1 $2 $3 ....
  • $# 위치 매개 변수의 수입니다.
  • $- 쉘에 대해 설정된 현재 옵션.
  • $$ 현재 쉘의 pid (서브 쉘 아님).
  • $_ 가장 최근 매개 변수 (또는 시작 직후에 현재 쉘을 시작하는 명령의 abs 경로).
  • $IFS (입력) 필드 구분 기호입니다.
  • $? 가장 최근의 포 그라운드 파이프 라인 종료 상태입니다.
  • $! 가장 최근의 백그라운드 명령의 PID입니다.
  • $0 쉘 또는 쉘 스크립트의 이름입니다.

위의 대부분은 Bash Reference Manual의 Special Parameters 에서 찾을 수 있습니다 . 쉘이 설정 한 모든 환경 변수 가 있습니다 .

종합적인 색인은 Reference Manual Variable Index 를 참조하십시오 .


답변

  • $_ 마지막 명령의 마지막 인수
  • $# 현재 스크립트에 전달 된 인수 수
  • $*/ $@문자열 / 구분 목록으로 스크립트에 전달 된 인수 목록

내 머리 꼭대기에서. bash 특수 변수 용 Google.


답변

도와 줄 이해 $#, $0그리고 $1, …, $n나는이 스크립트를 사용합니까 :

#!/bin/bash

for ((i=0; i<=$#; i++)); do
  echo "parameter $i --> ${!i}"
done

이를 실행하면 대표 출력이 리턴됩니다.

$ ./myparams.sh "hello" "how are you" "i am fine"
parameter 0 --> myparams.sh
parameter 1 --> hello
parameter 2 --> how are you
parameter 3 --> i am fine


답변

몇 가지 예를 살펴보십시오. $ 0에는 프로그램 이름뿐만 아니라 일부 선행 경로가 포함될 수 있습니다. 예를 들어이 두 줄 스크립트를 ./mytry.sh로 저장하고 실행하십시오.

#!/bin/bash

echo "parameter 0 --> $0" ; exit 0

산출:

parameter 0 --> ./mytry.sh

이것은 Slackware 14.2를 통해 현재 (2016 년) Bash 버전입니다.


답변