2012-09-30 3 views
5

내 목표는 bash는 변수가 존재하지 않는 경우 너무로, 실행중인 프로그램에 인수를 추가하는 것입니다강타 "인라인"조건문

bob -a some_arg ((if we have ${VAR} defined add '-b ${VAR}' as an argument))

내가 좋아하는 뭔가를 피하기 위해 싶습니다

if [[ -z ${VAR} ]]; then 
    bob -a some_arg 
else 
    bob -a some_arg -b ${VAR} 
fi 

그래도 유일한 옵션입니까?

당신은 그것을 위해 배열을 사용할 수

답변

9

:

bob -a some_arg ${VAR:+-b "$VAR"} 

좋은 문서 : http://wiki.bash-hackers.org/syntax/pe

또한 LANG=C man bash | less +/'Parameter Expansion'

+0

테스트 :'printf "% s \ n"-a some_arg $ {VAR : + ..}' –

+0

그래, 그에 따라 편집 된 게시물. –

2

은 (Arrays 참조) bash는 매개 변수 확장를 사용

args=(-a some_args) 
if [ ... ] ; then 
    args+=(-b "${VAR}") 
fi 
bob "${args[@]}" 
+0

흠 ... 그 질문에 실제로 대답할지는 확실치 않습니다. – Mat

+0

사실, 그럴 것 같습니다. 아직 시도하지 않았기 때문에 아직 받아 들여지지 않은 것으로 표시하지 않았습니다. – Matoe

관련 문제