${!name} is an indirect reference; if name=value then ${!name} is the same as ${value}. ${#} is the arg count; with 5 args ${!#} becomes $5
0
0
2
0
0