| $name | shell variable name |
| ${name} | delimit shell variable name |
| ${name-word} | variable nameif set, else word |
| ${name=word} | as above but also set name to word |
| ${name?word} | use name if set, otherwise print word and exit |
| ${name+word} | use word if name is set, otherwise use nothing |
| ${namen} | element n in array name |
| ${#name} | length of shell variable name |
| ${#name*} | number of elements in array name |
| ${#name@} | number of elements in array name |
| ${name#pat} | remove shortest leading substring of name that matches pat |
| ${name##pat} | remove longest leading substring of name that matches pat |
| ${name%pat} | remove shortest trailing substring of name that matches pat |
| ${name%%pat} | remove longest trailing substring of name that matches pat |
| ${name:start} | length characters of name starting at start(counting from0); use rest of value if no length. Negative start counts from the end |
| ${name:start:length} | |
| ${name/pattern/string} | value of name with first match of pattern replaced with string |
| ${name/pattern} | value of name with first match of pattern deleted |
| ${name/#pattern/string} | value of name with match of pattern replaced with string;match must occur at beginning |
| ${name/%pattern/string} | value of name with match of pattern replaced with string;match occurs at end |