Size: 346
Comment:
|
Size: 1276
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 7: | Line 7: |
== Neat features == === -v for testing set variables, while handling undefined ones === -v: True if the shell variable varname is set (has been assigned a value). bash >=4.2 supports -v for testing for *set* variables while handling empty ones, also no specials needs when running under 'set -u': {{{#!highlight sh % cat foo FOO='' [ -z "${FOO:-}" ] && echo 1 [ -z "${BAR:-}" ] && echo 2 [ -v FOO ] && echo 3 [ -v BAR ] && echo 4 % bash -u ./foo 1 2 3 }}} [[https://mobile.twitter.com/mikagrml/status/1222225444558209024?s=19|source]] also: If you use bash, you should really use [[ ]] instead of [ ]. It can do everything [ can (and then some, like ERE and glob matches), but is a shell keyword, which improves ergonomics quite a bit. See [ $x = 0 ] vs. [[ $x = 0]] after `unset x`, for example. == Tools == Use shellcheck with timonwong.shellcheck plugin. Use bash-language-server. |
Interesting bash aliases and functions:
https://github.com/Bash-it/bash-it: Community bash "framework"
Neat features
-v for testing set variables, while handling undefined ones
-v: True if the shell variable varname is set (has been assigned a value).
bash >=4.2 supports -v for testing for *set* variables while handling empty ones, also no specials needs when running under 'set -u':
also:
If you use bash, you should really use ]] instead of [ ]. It can do everything [ can (and then some, like ERE and glob matches), but is a shell keyword, which improves ergonomics quite a bit. See [ $x = 0 ] vs. [[ $x = 0 after unset x, for example.
Tools
Use shellcheck with timonwong.shellcheck plugin.
Use bash-language-server.