第14章 处理用户输入

来源:互联网 发布:php 权限管理 员工权限 编辑:程序博客网 时间:2024/05/17 00:00

14.1 命令行参数
14.1.1 读取参数
bash shell会将一些称为位置参数的特殊变量分配给输入到命令行中的所有参数。这也包括shell所执行的脚本名称。位置参数变量是标准的数字:01是第一个参数,依次类推。
这里写图片描述
可以在shell脚本中像使用其他变量一样使用$1变量。shell脚本会自动将命令行参数的值分配给变量,不需要你作任何处理。
每个参数必须用空格分开。

14.1.2 读取脚本名
可以用$0参数获取shell在命令行启动的脚本名。
这里写图片描述
basename命令会返回不包含路径的脚本名。
这里写图片描述

14.1.3 测试参数
在使用参数前一定要检查其中是否存在数据。
这里写图片描述

14.2 特殊参数变量

14.2.1 参数统计
特殊变量#含有脚本运行事携带的命令行参数的个数。可以在脚本中过任何地方使用这个特殊变量,和普通变量一样。{ !# }代表了最后一个命令行参数变量。

14.2.2 抓取所有的数据
@变量会将命令行上提供的所有参数当做同一个字符串中的多个独立的单词。
这里写图片描述

14.3 移动变量
在使用shift命令时,默认情况下它会将每个参数变量向左移动一个位置。所以,变量32中,变量21中,而变量$1的值则会被删除。
这里写图片描述
可以给shift命令提供给一个参数,指明要移动的位置数就行了。

14.4 处理选项
选项是跟在单破折线后面的单个字母,它能改变命令的行为。

14.4.1 查找选项
1.处理简单选项
这里写图片描述

2 分离参数和选项
shell会用双破折线(–)来表明选项列表结束。在双破折线之后,脚本就可以放心地将剩下的命令行参数当作参数,而不是选项来处理了。
这里写图片描述
这里写图片描述

3 处理带值的选项
这里写图片描述

14.4.2 使用getopt命令
getopt命令是一个在处理命令行选项和参数时非常方便的工具。能够识别命令行参数。
1 命令的格式
getopt命令可以接受一系列任意形式的命令行选项和参数,并自动将他们转换成适当的格式。
getopt optstring parameters
optstring中列出你要在脚本中用到的每个命令行选项字母。然后,在每个需要参数值的选项字幕后加一个冒号。
getopt ab:cd -a -b test1 -cd test2 test3

2 在脚本中使用getopt
set命令能够处理shell中的各种变量。
set命令的选项之一是双破折线(–),它会将命令行参数替换成set命令的命令行值。
该方法会将原始脚本的命令行参数传给getopt命令,之后再将getopt命令的输出传给set命令,用getopt格式化后的命令行参数来替换原始的命令行参数,看起来如下所示:
set – (getoptqab:cd"@”)
这里写图片描述

14.4.3 使用更高级的getopts
getopts格式:
getopts optstring variable
有效的选项字母都会列在optstring中,如果选项字母要求有个参数值,就加一个冒号。要去掉错误消息的话,可以在optstring之前加一个冒号。getopts命令将当前参数保存在命令行中定义的variable中。
如果选项需要跟一个参数值,OPTARG环境变量就会保存这个值。OPTIND环境变量保存了参数列表中getopts正在处理的参数位置。
这里写图片描述

这里写图片描述

14.5 将选项标准化
这里写图片描述

14.6 获取用户输入

14.6.1 基本的读取
read命令从标准输入(键盘)或另一个问价描述符中接受输入。在收到输入后,read命令会将数据放进一个变量。
这里写图片描述
-n选项允许脚本用户紧跟其后输入数据,而不是下一行。
read命令会将提示符后输入的所有数据分配给单个变量,要么你就指定多个变量。
如果不指定变量,会将它收到的任何数据都放进特殊环境变量REPLY中。

14.6.2 超时
-t选项指定了read命令等待输入的秒数。当计时器过期后,read命令会返回一个非零退出状态码。
这里写图片描述

read命令可以统计输入的字符数,当输入的字符达到预设的字符数时,就自动退出,将输入的数据赋给变量。
这里写图片描述

14.6.3 隐藏方式读取
-s选项可以避免在read命令中输入的数据出现在显示器上。

14.6.4 从文件中读取
read命令可以读取Linux系统上文件里保存的数据。每次调用read命令,它都会从文件中读取一行文本。当文件中再没有内容时,read命令会退出并返回非零状态码。
对文件使用cat命令,将结果通过管道直接传给含有read命令的while命令。
这里写图片描述

14.7 小结

0 0
原创粉丝点击