Comments (3)
Depends on what expr
is. You can do if expr
to run a command and use the exit status. [[
is for other non-exit code evaluations.
from bashstyle.
Aha, that's the one! So for example, you're better off doing something like...
# Best
if grep -q 'foo' somefile; then
...
fi
# Won't work
if [ grep -q 'foo' somefile ]; then
...
fi
# Will work, but less nice
if [ "$(grep -m1 'foo' somefile)" ]; then
...
fi
Worth adding something about this to the bashstyle?
from bashstyle.
Sure. "If you're just testing exit code, don't use [[
" ... (or [
, but that's already forbidden)
Your last example isn't just less nice, it's semantically different. It will test if the output is not empty. Sometimes that's the same, sometimes not.
from bashstyle.
Related Issues (20)
- Why to always use "if [[ ... ]]; then; fi" instead of a conditional statement HOT 7
- Tabs are not evil! HOT 11
- Use curly braces for all variable references HOT 6
- Use [[ -n "$whatever" ]] rather than [[ "$whatever" ]] HOT 2
- Use `command -v` instead of `which` &c HOT 5
- Locale independence HOT 1
- Throwing `set -a` and `set +a` around a variable pair list HOT 2
- Using defaults and "${VAR:?}" HOT 3
- Ownership and modes HOT 1
- Tracing and Debugging HOT 2
- Mention shellcheck HOT 3
- support for differences when considering zsh/sh compatibility? HOT 2
- Guidance on documenting functions HOT 7
- set -u HOT 1
- Example of "This can be queried/extracted with a simple function using reflection." HOT 2
- Google's Bash styleguide link is broken HOT 2
- [discuss] Suffix all bash scripts with .sh
- Article reference link appears broken.
- Add license information
- Coverage
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 bashstyle.