From bb819d5ef6c6dc68da524de07991eae2a2c3a3af Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 15 Apr 2016 17:37:46 -0400 Subject: Use a better technique for dealing with empty arrays when `set -u`. https://news.ycombinator.com/item?id=11497636 --- HACKING/code-quality.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'HACKING') diff --git a/HACKING/code-quality.md b/HACKING/code-quality.md index a520ce5..8efd561 100644 --- a/HACKING/code-quality.md +++ b/HACKING/code-quality.md @@ -49,7 +49,8 @@ Use `set -u` if you can; it makes using an unset variable an error. - If a variable not being set is valid (perhaps a configuration option), use `${var:-}` when accessing it to suppress the error. - An empty array counts as unset, so if you have an array that may be - empty, use `set +u` before accessing it. + empty, use `${var+"${var[@]}"}` (don't put quotes around the outer + pair of braces) to only access it if it's non-empty. - The reason for this is that a normal string variable is basically an array with length=1; an unset variable looks like an array with length=0. Weird stuff. -- cgit v1.2.2