shell脚本命令行参数简介

2019-09-23 09:40:41王振洲

2,使用getopt命令
getopt命令在处理选项和参数时非常方便。它对参数进行重新组 织,以便于解析
1)命令格式
getopt可以接受任意形式的选项和参数列表,并自动将它们转换为适当的格式。
命令格式为: getopt options optstring parameters
选项字符串(opstring)用于定义命令行中的有效选项字母,以及哪些选项字母需要参数值。
2)脚本中使用getopt
需要使用set命令将现有的命令行选项和参数替换为getopt命令生成的 格式化形式。
需要将原始脚本命令行参数送给getopt命令,然后将getopt命令输出送给set命令,如下:set – `getopts –q ab:cd “$@”`
但是getopt命令不能很好的处理带有空格的参数值,它将空格解析为参数分隔符,而不是将双引号引起来的两个 值合并成一个参数。解决办法如下:
3)更高级的getopts命令
getopts命令顺序的对现有的shell参数变量进行处理,每调用一次,只处理命令中检测到的参数中的一个。处理完所有参数后,以大于0的退出 状态退出。
非常适宜于在循环中解析所有命令行参数
格式为: getopts optstring variable
$optarg包含需要参数值的选项要使用的值,$optind包含getopts停止处理时在参数列表中的位置。
注意:当getopts处理时,会将选项前的-去掉,所以对应的case中不需要破折号。

好的特性:
1)可以在参数值中包含空格
2)选项字母和参数值中间可以没有空格
3)将在命令行中找到的未定义的选项都绑定为单一的输出——问号

5、标准化选项
有一些字母选项具有标准含义。最好按照标准含义定义选项意义
-a –c –d –e –f –h –i –l –n –o –q –r –s –v- x –y

6、获取用户输入
当需要在执行过程中获得执行脚本人员的输入,使用read命令
1)基本读取
read命令接受标准输入或其他文件描述符输入。读入后将数据放入 一个标准变量中。
-p 允许在read命令行中直接指定一个提示。
可以指定多个变量,也可以不指定将放置在reply环境变量中)
2)计时
使用-t指定一个计时器,计时数满还未输入,read返回一个非0的退出状态。
使用-n指定输入的字符个数,输入达到预定数目时,就自动结束输入
3)默读
使用-s使输入不显示在终端例如输入密码)
4)读取文件
最常用的方法是使用cat命令,并通过管道传给包含read的while语句。
例子:
复制代码 代码示例:
cat test | while read line