Updated SC2055 (markdown)

koalaman
2016-09-24 15:11:04 -07:00
parent 45f29a9951
commit 25b1332d57

@@ -22,13 +22,13 @@ fi
This is not a bash issue, but a simple, common logical mistake applicable to all languages. This is not a bash issue, but a simple, common logical mistake applicable to all languages.
`[[ $1 != foo || $1 != bar ]]` is always true: `[[ $1 != foo || $1 != bar ]]` is always true (when `foo != bar`):
* If `$1 = foo` then `$1 != bar` is true, so the statement is true. * If `$1 = foo` then `$1 != bar` is true, so the statement is true.
* If `$1 = bar` then `$1 != foo` is true, so the statement is true. * If `$1 = bar` then `$1 != foo` is true, so the statement is true.
* If `$1 = cow` then `$1 != foo` is true, so the statement is true. * If `$1 = cow` then `$1 != foo` is true, so the statement is true.
`[[ $1 != foo && $1 != bar ]]` matches when `$1` is not `foo` and not `bar`: `[[ $1 != foo && $1 != bar ]]` matches when `$1` is neither `foo` nor `bar`:
* If `$1 = foo`, then `$1 != foo` is false, so the statement is false. * If `$1 = foo`, then `$1 != foo` is false, so the statement is false.
* If `$1 = bar`, then `$1 != bar` is false, so the statement is false. * If `$1 = bar`, then `$1 != bar` is false, so the statement is false.
@@ -38,4 +38,4 @@ This statement is identical to `! [[ $1 = foo || $1 = bar ]]`, which also works
### Exceptions ### Exceptions
None. Rare.