콜론 대시가 있는 변수 ${VAR:-}

콜론 대시가 있는 변수 ${VAR:-}

아래의 "if-then-else 예"에서 "${2:-}"는 어떻게 작동합니까? 왠지 ${2:-}가 두 번째 인수를 의미한다고 생각하지 않을 수 없는데, 숫자 2 뒤의 콜론(:)과 대시(-)가 무엇을 의미하는지 궁금합니다.

  if [ "${2:-}" = "Y" ]; then
     prompt="Y/n"
     default=Y
  elif [ "${2:-}" = "N" ]; then
     prompt="y/N"
     default=N
  else
     prompt="y/n"
     default=
  fi

  read -p "$1 [$prompt] " REPLY </dev/tty

답변1

구문은 or 또는 설정되지 않은 경우 하이픈 뒤의 텍스트(이 경우 ) ${VAR:-default}값으로 평가됩니다 . 구문은 유사한 함수의 약어와 유사합니다.VARdefault${VAR- default}오직변수가 설정되지 않은 경우. $2위치 매개변수이므로 문은 설정되지 않은 경우 기본값으로 null을 사용하여 두 번째 매개변수의 값을 테스트합니다.

일반 기본값과 동일한 효과가 있는데 왜 빈 기본값을 사용합니까 $2? set -u( 와 동일 ) 에서 set -o nounset설정되지 않은 변수를 바꾸면 오류가 발생하므로 인수가 2개 미만이면 $2오류가 발생합니다. 하지만 ${2:-}매개변수가 설정되지 않거나 비어 있으면 빈 문자열을 명시적으로 대체하므로 오류가 발생하지 않습니다.

관련 정보