if [ "myvar" ] then echo "myvar is set" fi
if [ "$myvar" ] then echo "myvar is set" fi
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)
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.