Shell解析传入参数
shell中的特殊参数$#: 传递到脚本的参数个数 $*: 以一个单字符串显示所有向脚本传递的参数 $$: 脚本运行的当前进程ID $: 与$#相同但在使用时加引号并在引号中返回每个参数 $-: 显示shell使用的当前选项与set命令功能相同 $?: 显示最后命令的退出状态。0表示没有错误其他任何值表明有错误。 $0: 脚本名字$1位置参数1$2位置参数2... ${10}位置参数10 $_: 之前命令的最后一个参数手动处理命令行参数复杂而容易出问题我们可以直接利用getopts和getopt来处理shell的外部传入的参数。getoptsgetopts不支持长选项它的使用模板如下#/bin/bash while getopts :o:f:a opt do case $opt in o) echo option $OPTARG ;; f) echo filename $OPTARG ;; a) echo a ;; ?) echo Unknow input exit 1 ;; esac donegetopts使用形式getopts option_string var后边带的表示必须带有参数o:f:a表示o和f后必须带有实际值而a不需要。传递变量时OPTARG保存选项的参数。OPTIND存储的是下一个参数的index。在optin_string最前面加:时如果a是带参数但实际没有传入会自动报错如果不加:运行时不带参数传入会被忽略。getopts在检测到非法参数就会停止。getopt如果需要支持长选项以及可选参数就需要使用getopt。比较复杂但功能更强大。