Bash 구문 쿼리: ${*:- "-a"}

Bash 구문 쿼리: ${*:- "-a"}

Bash 쉘 스크립트의 의미를 이해하지 못합니다.

MYSET=${*:- "-a"}

누구든지 이것을 설명할 수 있나요?

답변1

변수가 설정되지 않거나 비어 있으면 매개변수 확장이 ${variable:-value}문자열로 확장됩니다. 이는 쉘에 특정하지 않지만 모든 POSIX 호환 쉘에 적용되는 표준 매개변수 확장입니다.valuevariablebash

특수 변수는 위치 매개변수와 구분 기호인 첫 번째 문자(기본값은 공백)로 $*연결된 문자열입니다 . $IFS위치 인수는 스크립트나 셸 함수에 제공되는 인수이거나 value , 등 set의 유틸리티를 사용하여 설정됩니다 . 이것도 구체적이지 않습니다.$1$2$3bash

명령은 값이 비어 있지 않는 한 변수를 (대개 공백이 있는 스크립트에 제공된 명령줄 인수) MYSET로 설정하며, 이 경우 초기 공백 으로 설정됩니다 . 이 특별한 경우에는 주변 따옴표가 아무런 차이가 없습니다.$*MYSET-a-a

명령줄의 예제 코드:

$ set --
$ MYSET=${*:- "-a"}; printf '%s\n' "$MYSET"
 -a
$ set -- 1 2 3
$ MYSET=${*:- "-a"}; printf '%s\n' "$MYSET"
1 2 3

관련 정보