Comments (2)
This inconsistency was intentionally introduced in d603ee1 to reduce the noise of A && B || C
when C is a single, allowlisted command (echo, printf, exit, return), since these generally aren't a problem. It does not aim to generally determine whether C is a harmless or side effect free command or structure, as this is an infinite rabbit hole.
Somewhat unrelated, the suggestion shouldn't trigger when B is a test, and this is added in 76ff702.
from shellcheck.
@koalaman Oh 76ff702 seems definitely related - it actually solves my main issue 🤩 Thanks!
So a little background, in case someone else stumbles upon the same: I got here in the first place because of simple initial variable checks in a script, such as:
#!/bin/sh
#Check env vars
[ "$NECESSARY_ENV_VAR1" ] && [ "$NECESSARY_ENV_VAR2" ] || {
echo "Missing correct set of environment vars (NECESSARY_ENV_VAR1 and NECESSARY_ENV_VAR2)"
exit 1
}
...
This used to trigger a SC2015, so I dug into it and noticed that it doesn't trigger with a simpler [ "$NECESSARY_ENV_VAR1" ] && [ "$NECESSARY_ENV_VAR2" ] || exit 1
... And this was inconsistent, but I agree it should rather be fixed by focusing on the nature of B
in the A && B || C
problem.
from shellcheck.
Related Issues (20)
- SC2034 doesn't consider local function definitions to define new scopes
- Please separate the issue of unused functions from SC2317 (Command appears to be unreachable) HOT 11
- `require-double-brackets` doesn't work in BusyBox `sh` even though `[[` is supported HOT 2
- SC2115 fires when it is statically verifyable that the variable cannot be empty HOT 2
- SC2221/SC2222 fires for non-exhaustive wildcard patterns HOT 1
- SC2154 var is referenced but not assigned not triggered if used within an array HOT 1
- Feature Request: Provide an option to specify the fallback shell type HOT 9
- SC2251 - add ${PIPESTATUS[0]} check to exceptions HOT 1
- [Bug / regression?] In file ignore directives (# shellcheck disable=<check_id>) are not specific & disable all checks instead (not just check_id) HOT 1
- Skip SC2015 when it end with: || true
- Please support all alias for busybox shell equally
- SC2154 from strict bash mode example using trap
- SC2086 false positive on readonly integer variable
- SC2004 false positive on assignment to array position HOT 1
- Missing SC2166 URL in summary section HOT 1
- SC2094, SC2035, SC2034, SC2205, SC2283 ternary arithmetic false positives
- RFE: variant of `source=` directive that supports globbing
- SC1090 is sometimes not raised HOT 1
- [Feature request][Bash] Add rules to provide tips on adding local, or readonly status to variables
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shellcheck.