Linux Shell (6)-命令行选项、参数-shift、getopt、getopts
- 定义
参数:命令行后面的数据值
选项:修改命令行为的单字符值,以-(破折号)开头
- 命令行参数索引、长度:
$0-程序或者脚本名称的完整路径,如果只需要获取名称可以使用"basename $0";
$1-第一个参数,$2-第二个参数,......,$9-第九个参数,${10}-第十个参数,此后的索引必须加{}
参数中不允许有空格,否则必须用引号;
$#-命令行参数的个数,如果获取最后一个参数应该使用${!#}而不是${$#}
$*-所有参数作为一个整体处理
$@-所有参数作为多个元素的集合处理
$**$**-当前脚本PID
- shift
左移每一个参数,$0保持不变, $1被丢弃
- 命令行中参数选项以--(双破折号分隔),前为选项,后为参数
- getopt 格式化选项、参数
getopt options optstring parameters
optstring 标记选项是否需要参数,有参数选项字母后加:
-q 忽略产生的错误消息
set -- 'getopt -q a:bcd** "$@"'**,将原有的命令行参数选项替换为getopt格式后的形式
- getopts 每次只取一个选项
getopts optstring variable
忽略产生的错误消息,需要在optstring前面加:(冒号)
OPTARG 选项的参数值
OPTIND 选项的索引值
当选项获取完成后通过:
shift $(( OPTIND - 1))
$*
读取剩下的命令行参数