SC2078 – ShellCheck Wiki

See this page on GitHub

Sitemap


This expression is constant. Did you forget a $ somewhere?

Problematic code:

if [ "myvar" ]
then
  echo "myvar is set"
fi

Correct code:

if [ "$myvar" ]
then
  echo "myvar is set"
fi

Rationale:

ShellCheck has found a [ .. ] or [[ .. ]] statement that just contains a literal string. Such a check does not do anything useful, and will always be true (or always false, for empty strings).

This is usually due to missing $ or bad quoting:

if [[ STY ]             # always true
if [[ $STY ]]           # checks variable $STY

if [[ 'grep foo bar' ]] # always true
if [[ `grep foo bar` ]] # checks grep output (poorly)
if grep -q foo bar      # checks for grep match (preferred)

Exceptions:

None


ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.