!["${parameter:+word}"의 목적과 사용 사례는 무엇인가요? [폐쇄]](https://linux55.com/image/10057/%22%24%7Bparameter%3A%2Bword%7D%22%EC%9D%98%20%EB%AA%A9%EC%A0%81%EA%B3%BC%20%EC%82%AC%EC%9A%A9%20%EC%82%AC%EB%A1%80%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
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