"${parameter:+word}"의 목적과 사용 사례는 무엇인가요? [폐쇄]

"${parameter:+word}"의 목적과 사용 사례는 무엇인가요? [폐쇄]

Bash 매뉴얼에서

${parameter:+word}

인수가 null이거나 설정되지 않은 경우 아무것도 대체되지 않습니다.그렇지 않으면 단어의 확장이 대체됩니다.

이는 "매개변수"의 대상 문자열이 존재하고 비어 있지 않은 경우에만 문자열 대체처럼 보입니다.

이 매개변수 확장의 목적과 사용 사례는 무엇입니까?

감사해요.

답변1

예를 들어 명령줄에 일부 플래그를 추가하기 위해 플래그 변수와 함께 이를 사용할 수 있습니다.

use_x=1
param_x=foobar
somecmd ${use_x:+-x} ${use_x:+$param_x}

물론, with 부분은 param_x단어 분리기와 와일드카드에 취약하므로 좋은 생각이 아닙니다. 이는 정적 플래그 자체에는 문제가 되지 않지만 일반적으로 여기서는 배열을 사용하는 것이 더 강력합니다.

변수가 설정되었는지 테스트하려면 . (콜론 없음) [ -n "$var" ]이 유사하게 작동 하지만 빈 변수와 설정되지 않은 변수를 구별하는 데 유용합니다.${var:+value}${var+value}

unset a
b=
[ "${a+x}" = "x" ] && echo a is set
[ "${b+x}" = "x" ] && echo b is set

관련 정보