mirror of
https://github.com/kvz/bash3boilerplate.git
synced 2025-01-20 19:18:46 +00:00
Adopt a few more best practices from my old blogpost http://kvz.io/blog/2013/11/21/bash-best-practices/
This commit is contained in:
parent
649b5a0f44
commit
83b13e5f55
@ -136,6 +136,13 @@ $ my_script some more args --blah
|
||||
- This project settles on two spaces for tabs
|
||||
- Use `UPPERCASE_VARS` to indicate environment variables that can be controlled outside your script
|
||||
- Use `__double_underscore_prefixed_vars` to indicate global variables that are solely controlled inside your script, with the exception of arguments wich are already prefixed with `arg_`, and functions, over which b3bp poses no restrictions.
|
||||
- Use `set` rather than relying on a shebang like `#!/usr/bin/env bash -e` as that is neutralized when someone runs your script as `bash yourscript.sh`
|
||||
- Use `BASH_SOURCE[0]` if you refer to current file even if it is sourced by a parent script. Otherwise use `${0}`
|
||||
- Use `:-` if you want to test variables that could be undeclared. For instance: `if [ "${NAME:-}" = "Kevin" ]` will set `$NAME` to be empty if it's not declared instead of throwing an error. You can also set it to `noname` like so `if [ "${NAME:-noname}" = "Kevin" ]`
|
||||
- Use long options (`logger --priority` vs `logger -p`). If you're on cli, abbreviations make sense for efficiency. but when you're writing reusable scripts a few extra keystrokes will pay off in readability and avoid ventures into man pages in the future by you or your collaborators.
|
||||
- `#!/usr/bin/env bash` is more portable than `#!/bin/bash`.
|
||||
- Surround your variables with `{}`. Otherwise bash will try to access the `$ENVIRONMENT_app` variable in `/srv/$ENVIRONMENT_app`, whereas you probably intended `/srv/${ENVIRONMENT}_app`.
|
||||
- You don't need two equal signs when checking `if [ "${NAME}" = "Kevin" ]`.
|
||||
|
||||
## Frequently Asked Questions
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user