$#表示包括$0在内的命令行参数的个数。在Shell中,脚本名称本身是$0,剩下的依次是$0、$1、$2…、${9},等等。
$*表示整个参数列表,不包括$0,也就是说不包括文件名的参数列表。
$?表示上一个命令的执行结果
shift的用法