Skip to main content
added 2 characters in body
Source Link
phk
  • 6.1k
  • 7
  • 44
  • 76

In bash and shells with similar array support you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

demo() {
  [[ "$var" ]] && param=("$var") || param=()
  
  echo -n 'output: '
  printf '<%s> ' before "${param[@]}" after
  echo
}

demo # output: "<before><before> <after>"<after> 

var=''
demo # output: "<before><before> <after>"<after> 

var='foo bar'
demo # output: "<before><before> <foo bar> <after>"<after> 

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

In bash and shells with similar array support you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

demo() {
  [[ "$var" ]] && param=("$var") || param=()
  
  echo -n 'output: '
  printf '<%s> ' before "${param[@]}" after
  echo
}

demo # output: "<before> <after>"

var=''
demo # output: "<before> <after>"

var='foo bar'
demo # output: "<before> <foo bar> <after>"

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

In bash and shells with similar array support you can do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

demo() {
  [[ "$var" ]] && param=("$var") || param=()
  
  echo -n 'output: '
  printf '<%s> ' before "${param[@]}" after
  echo
}

demo # output: <before> <after> 

var=''
demo # output: <before> <after> 

var='foo bar'
demo # output: <before> <foo bar> <after> 

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

added 2 characters in body
Source Link
phk
  • 6.1k
  • 7
  • 44
  • 76

In bash and shells with similar array suppportsupport you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

var=''
demo() {
  [[ "$var" ]] && param=("$var") || param=()
  
# outputs: "<param_before>echo <param_after>"-n 'output: '
  printf '<%s> ' param_beforebefore "${param[@]}" param_after

after
var='foo bar' echo
}
[[ "$var" ]]
demo &&# param=("$var")output: ||"<before> param=()<after>"

var=''
demo # outputsoutput: "<param_before> <foo"<before> bar><after>"

var='foo <param_after>"bar'
printfdemo '<%s># 'output: param_before"<before> "${param[@]}"<foo param_afterbar> <after>"

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

In bash and shells with similar array suppport you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

var=''

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after


var='foo bar'

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <foo bar> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

In bash and shells with similar array support you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

demo() {
  [[ "$var" ]] && param=("$var") || param=()
  
  echo -n 'output: '
  printf '<%s> ' before "${param[@]}" after
  echo
}

demo # output: "<before> <after>"

var=''
demo # output: "<before> <after>"

var='foo bar'
demo # output: "<before> <foo bar> <after>"

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

added 2 characters in body
Source Link
phk
  • 6.1k
  • 7
  • 44
  • 76

In bash and shells with similar array suppport you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

var=''

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after 


var='foo bar'

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <foo bar> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

In bash and shells with similar array suppport you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

var=''

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after

var='foo bar'

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <foo bar> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

In bash and shells with similar array suppport you can also do the following:

# default is an empty array
param=()

# if $var is not empty then add it to array
[[ "$var" ]] && param=("$var")

# use the $@-like magic for arrays
java -cp /etc/etc MyClass param1 param2 "${param[@]}" param4

Demo

var=''

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after 


var='foo bar'

[[ "$var" ]] && param=("$var") || param=()

# outputs: "<param_before> <foo bar> <param_after>"
printf '<%s> ' param_before "${param[@]}" param_after

Note

See also https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions where the approach from iruvar's answer is also explained again.

added 152 characters in body
Source Link
phk
  • 6.1k
  • 7
  • 44
  • 76
Loading
Source Link
phk
  • 6.1k
  • 7
  • 44
  • 76
Loading