Expansion
Expansion in a command shell is somewhat like macro expansion in macro parsers (such as cpp and m4), but in a command shell, they are less often used for constants, and usually for using variables and string manipulation.[1] For example, $var on a line expands to the value of the variable var when the line is executed. Expansions are usually passed as arguments, but may also be used as commands.[2]
You can concatenate expansions with regular string arguments or even other expansions. In the simplest case, when the expansion returns a string value, this is equivalent to ordinary string concatenation; for example, ‘${echo "foo"}bar’ returns ‘foobar’. The exact behavior depends on the types of each value being concatenated:
both strings
Concatenate both values together.
one or both numbers
Concatenate the string representation of each value. If either value is numeric, mark the concatenated value as numeric if possible.
one or both (non-nil) lists
Concatenate “adjacent” elements of each value (possibly converting back to a number as above). For example, ‘$(list "a" "b")c’ returns ‘("a" "bc")’.
anything else
Concatenate the string representation of each value.