Bash 쉘 스크립트의 의미를 이해하지 못합니다.
MYSET=${*:- "-a"}
누구든지 이것을 설명할 수 있나요?
답변1
변수가 설정되지 않거나 비어 있으면 매개변수 확장이 ${variable:-value}
문자열로 확장됩니다. 이는 쉘에 특정하지 않지만 모든 POSIX 호환 쉘에 적용되는 표준 매개변수 확장입니다.value
variable
bash
특수 변수는 위치 매개변수와 구분 기호인 첫 번째 문자(기본값은 공백)로 $*
연결된 문자열입니다 . $IFS
위치 인수는 스크립트나 셸 함수에 제공되는 인수이거나 value , 등 set
의 유틸리티를 사용하여 설정됩니다 . 이것도 구체적이지 않습니다.$1
$2
$3
bash
명령은 값이 비어 있지 않는 한 변수를 (대개 공백이 있는 스크립트에 제공된 명령줄 인수) 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