Nitro's

Nov 20, 2015 - Comments - dev

Linux Shell (6)-命令行选项、参数-shift、getopt、getopts

1)  定义

参数:命令行后面的数据值

选项:修改命令行为的单字符值,以-(破折号)开头

2)  命令行参数索引、长度:

$0-程序或者脚本名称的完整路径,如果只需要获取名称可以使用”basename $0“;

$1-第一个参数,$2-第二个参数,……,$9-第九个参数,${10}-第十个参数,此后的索引必须加{}

参数中不允许有空格,否则必须用引号;

$#-命令行参数的个数,如果获取最后一个参数应该使用${!#}而不是${$#}

$*-所有参数作为一个整体处理

$@-所有参数作为多个元素的集合处理

$$-当前脚本PID

3)  shift

左移每一个参数,$0保持不变,  $1被丢弃

4) 命令行中参数选项以(双破折号分隔),前为选项,后为参数

5)  getopt 格式化选项、参数

getopt options optstring parameters

optstring 标记选项是否需要参数,有参数选项字母后加:

-q 忽略产生的错误消息

**set – ‘getopt -q a:bcd “$@”’**,将原有的命令行参数选项替换为getopt格式后的形式

6) getopts 每次只取一个选项

getopts optstring variable

忽略产生的错误消息,需要在_optstring_前面加:(冒号)

OPTARG 选项的参数值

OPTIND  选项的索引值

当选项获取完成后通过:

shift $(( OPTIND - 1))

$*

读取剩下的命令行参数