Search code examples
javabashshellcheck

Shellcheck suggestion for SC2806 giving me issue with JAVA_OPTS


I'm getting shellcheck suggestion SC2806 i.e. Double quote to prevent globbing and word splitting for $JAVA_OPTS.

When I apply that to my code java $JAVA_OPTS -Dhttps.proxyHost=%PROXY_HOST%

I get the 503 Error Back-end server busy error. The ec2 instance activity reports that the instance health check failed.

But when I don't use "" to $JAVA_OPTS, then it works and I get 200 OK response and everything works.

when I echoed $JAVA_OPTS it echoed as empty.

What could be the reason for this?


Solution

  • The other answer explains what causes the issue.

    Here’s how to fix it: instead of passing $JAVA_OPTS (either quoted or unquoted) to java, pass ${JAVA_OPTS:+"$JAVA_OPTS"}. This will cause the parameter expansion only if it is non-empty. If $JAVA_OPTS is empty, no expansion will be passed to the command.

    See the documentation for more information about the :+ expansion.