This has never stuck with me, and I hadn't thought about why until now. I have two reasons why I will always write ${x}_$y.z instead of ${x}_${y}.z:
- Syntax highlighting and shellcheck have always caught the cases I need to add braces to prevent
$x_being expanded as${x_}. - I write a lot of Zsh. In Zsh, braces are optional in way more cases.
"$#array[3]"actually prints the length of the third item inarray, rather than (Bash:) the number of positional parameters, then the string'array[3]'.