2 SC2256
Joachim Ansorg edited this page 2021-11-12 19:55:49 +01:00

This translated string is the name of a variable. Flip leading $ and " if this should be a quoted substitution.

Problematic code:

var="foo"
echo $"var"

Correct code:

var="foo"
echo "$var"

Rationale:

$".." is a localized string, for example, echo $"Hello $USER" along with the proper translation files can be used to have the script say "Bonjour, youruser" in French locales.

In this case, ShellCheck found a localized string whose contents is also the name of a variable. This could have happened because the user wanted a far more common quoted substitution, e.g. "$var", but accidentally switched the leading $ and ".

Exceptions:

If you do want a localized string whose contents is also an active variable, you can ignore this warning or rename the variable.

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!