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