Basic tips
- Use 
for …;{ …;} instead of for …;do …;done 
- Use 
$[…] instead of $((…)) for arithmetic expansion 
- Try to use 
&& or || instead of if 
: is a short command that does nothing 
history -p prints each argument on a new line 
- Unset variables evaluate to 0 in arithmetic expressions
 
Parameter expansion
Parameter expansion is useful to get or replace substrings, get the length of values or change the case of strings.
a="Hello, World!"
echo ${a:0:5}  # Hello
echo ${#a}     # 13
echo ${a//o/O} # HellO, WOrld!
echo ${a@U}    # HELLO, WORLD!
echo ${a@L}    # hello, world!