diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2020-05-07 01:48:11 +0000 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2020-05-07 01:48:11 +0000 |
commit | adb9b3fe169a92ea2da7b8c804c8b91f966c21a4 (patch) | |
tree | fe340f4de0afa6763e220194d2e6bea3366b4c71 /_notes/bash.md | |
parent | bind-mounts: rename the file (diff) | |
download | jekyll-theme-adb9b3fe169a92ea2da7b8c804c8b91f966c21a4.tar.gz jekyll-theme-adb9b3fe169a92ea2da7b8c804c8b91f966c21a4.zip |
remove everything except Jekyll theme stuff
I tagged the previous commit to explain what's going on.
Diffstat (limited to '_notes/bash.md')
-rw-r--r-- | _notes/bash.md | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/_notes/bash.md b/_notes/bash.md deleted file mode 100644 index 353f011..0000000 --- a/_notes/bash.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: GNU bash ---- -(Associative) arrays --------------------- - -### Declaration - -`"${#xs[@]}"` doesn't work with `nounset` if `xs` wasn't defined, i.e. was -declared with either of - - local -a xs - declare -a xs - local -A xs - declare -A xs - -Therefore, if you want to extract the length of an array, append `=()` to the -statements above. - - local -a xs=() - declare -a xs=() - ... - -And now `"${#xs[@]}"` works with `nounset`. -It doesn't affect expansion (see below) though. - -### Expansion - -#### Do - - func ${arr[@]+"${arr[@]}"} - -#### Don't - - func "${arr[@]}" # Doesn't work with `nounset`. - func "${arr[@]+"${arr[@]}"}" # Doesn't work properly with `declare -a arr=('')`. - -### `unset` - -#### Do - - unset -v 'arr[x]' - unset -v 'arr[$i]' - -#### Don't - - unset -v arr[x] # May break due to globbing. - unset -v arr[$i] # The same as above + a possible problem with quotation. - unset -v 'arr["x"]' # Doesn't work for some reason. - unset -v 'arr["]"]' # The same as above; just highlighting the problem with funny characters in array indices. - unset -v 'arr["$i"]' # Also rejected. - - # An insightful discussion on the topic: https://lists.gnu.org/archive/html/help-bash/2016-09/msg00020.html. - -`errexit` ---------- - -### Do - - bar_output="$( bar )" - foo "$bar_output" - -### Don't - - foo "$( bar )" # With `errexit`, foo will still get executed. - # I don't know why. |