2012-09-30 36 views
5

Mục tiêu của tôi là để thêm một tham số để một chương trình được thực thi nếu một biến bash là tồn tại, như vậy:Bash "inline" điều kiện

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

Tôi muốn tránh cái gì đó như:

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

Mặc dù, đây là lựa chọn duy nhất?

Trả lời

9

Sử dụng bash tham số mở rộng:

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

Một số doc tốt: http://wiki.bash-hackers.org/syntax/pe

Và cũng LANG=C man bash | less +/'Parameter Expansion'

+0

để kiểm tra: 'printf"% s \ n "-a some_arg $ {VAR: + ..}' –

+0

Yup, bài đăng được chỉnh sửa tương ứng. –

2

Bạn có thể sử dụng một mảng cho rằng (xem Arrays):

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

Hum ... không chắc chắn rằng câu trả lời câu hỏi thực sự. – Mat

+0

Trong thực tế, nó có vẻ như để làm. Chỉ cần không đánh dấu nó là chấp nhận được kể từ khi tôi đã không thử nó. – Matoe

Các vấn đề liên quan