if [ -n "${NUSPEC_PROPERTIES}" ]; then
    NUSPEC_PROPERTIES+=';'
fi

Такой код не очень хорош.

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-6.html

The base for the 'if' constructions in bash is this:
if [expression];
then
code if 'expression' is true.
fi

https://stackoverflow.com/questions/190 … s-anywhere
https://linux.die.net/man/1/bash

-n string
    True if the length of string is non-zero.

Этот код не очень хорош, если вызывается несколько раз подряд, потому что он меняет содержимое переменной (а не очевидно, что нужно менять именно её содержимое, а не создать новую локальную переменную).

https://unix.stackexchange.com/question … al-keyword
The local keyword can take multiple variables. Providing the variable with a value is optional.

Local variables can only be used within a function; they are visible only to the function where they are defined and its children.