Pattern: Use of eval
with escaped array
Issue: -
ShellCheck noticed that you are calling eval
and including an escaped array. However, the array is passed as multiple arguments and relies on being implicitly joined together to form a single shell string, which eval
can then evaluate.
Instead, prefer building your shell string with explicit string concatenation by using *
instead of @
for the index, such as ${*@Q}
or ${array[*]@Q}
.
This suggestion is equivalent to SC2124
, but for eval
arguments rather than string variables.
Example of incorrect code:
eval "$MYCOMMAND ${@@Q}"
Example of correct code:
eval "$MYCOMMAND ${*@Q}"