diff --git a/SC2078.md b/SC2078.md new file mode 100644 index 0000000..91b6084 --- /dev/null +++ b/SC2078.md @@ -0,0 +1,35 @@ +## This expression is constant. Did you forget a `$` somewhere? +### Problematic code: + +```sh +if [ "myvar" ] +then + echo "myvar is set" +fi +``` + +### Correct code: + +```sh +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 \ No newline at end of file