linux shell 学习之第13章 处理用户输入
2016-08-29 22:41
183 查看
第13章 处理用户输入
13.1 命令行参数
1. 命令行参数。command 参数1 参数2...。用空格隔开。在脚本中引用时,$0为程序名(脚本名称),$1为第一个参数,$2为第二个参数,以此类推,一直到第九个参数,第十个参数开始,用$(10)表示。当参数为文本字符串时,若字符串中有空格,则字符串需用引号(单引号双引号都行)引起来。
2. $0 表示程序名,存储的是整个脚本的绝对路径。basename $0 可以只获取脚本名字。
3. if [ -n $1 ] 可以检查参数是否有数据。
13.2 特殊参数表量
1. 参数计数。$# 特殊变量表示脚本命令行参数的个数。params=$#, 然后$params 就可以取得最后一个变量,或者用$(!#)也可以获得最后一个变量。
2. 获取所有数据。$* 将所有参数当作一个字符串整体。$@ 则将循环遍历所有参数。
13.3 移动变量
shift命令将移动命令行参数变量,$2变量的值将会移动到 $1,而$1变量的值将会被删除,且不能恢复。但是$0变量的值不变。shift n 表示移动n个位置。
13.4 处理选项
即command -options 形式。
1. 处理简单选项(只有选项没有参数)。用shift命令移动选项。
2. 分离参数和选项。用“--”(双破折号)分隔参数和选项。
3. 处理带值选项。
4. 使用getopt命令。getopt optstring -options parameters, optstring表示所有需要用到的选项字母,带参数的选项字母后面加个冒号。
getopt ab:cd -a -b tes3 -cd test1 test2
-a -b test3 -c -d -- test1 test2
表示有四个选项a,b,c,d, 选项b带参数,后面test1,test2都是参数。
在脚本中使用:set -- 'getopt -q ab:cd "$@"', -q表示忽略错误消息。
但是getopt不擅长处理带空格的参数,可以用getopts命令解决。
getopts optstring variable。 optstring含义同上,若要去掉错误信息,在optstring前面加个冒号。variable保存当前选项值。该命令有两个环境变量,OPTARG表示保存选项后面所跟的参数,OPTIND保存该命令正在处理的选项的位置,结合OPTIND 和shift一起使用来移动命令行参数。
getopts会合理的处理参数之间的空格,并将所有未定义的选项统一输出为问号。解析选项时,会去掉选项前面的破折号。
13.5 将选项标准化
13.6 用户的输入
主要是read命令,在脚本中使用read variable,来获取用户的输入,$varialbe 可以调用用户的输入。
echo -n, -n选项会移掉字符串末尾的换行符,允许用户紧跟其后输入数据。
read 后面可以跟多个变量,以便来获取用户的多个输入,如果用户输入的值多于变量,最后多出的值会统一分配给最后一个变量。
read -p 选项,省略echo命令并制定变量名字,可以多个变量。
如果不指定变量,read命令会将所有接收到的数据都放到特殊环境变量REPLY中。
read -t,-t可以设置超时时间。
read -n,-n选项可以对用户输入的字符计数,-n1 表示只接收用户输入的第一个字符。
read-s,隐藏方式,即用户输入的数据不在屏幕上显示,比如密码。实际上只是将用户输入字符的颜色设置成背景色一样。
cat testfile | while read line 从文件中读入,每次读取一行数据,没有数据时,read命令会退出并返回非零退出状态码。
13.1 命令行参数
1. 命令行参数。command 参数1 参数2...。用空格隔开。在脚本中引用时,$0为程序名(脚本名称),$1为第一个参数,$2为第二个参数,以此类推,一直到第九个参数,第十个参数开始,用$(10)表示。当参数为文本字符串时,若字符串中有空格,则字符串需用引号(单引号双引号都行)引起来。
2. $0 表示程序名,存储的是整个脚本的绝对路径。basename $0 可以只获取脚本名字。
3. if [ -n $1 ] 可以检查参数是否有数据。
13.2 特殊参数表量
1. 参数计数。$# 特殊变量表示脚本命令行参数的个数。params=$#, 然后$params 就可以取得最后一个变量,或者用$(!#)也可以获得最后一个变量。
2. 获取所有数据。$* 将所有参数当作一个字符串整体。$@ 则将循环遍历所有参数。
13.3 移动变量
shift命令将移动命令行参数变量,$2变量的值将会移动到 $1,而$1变量的值将会被删除,且不能恢复。但是$0变量的值不变。shift n 表示移动n个位置。
13.4 处理选项
即command -options 形式。
1. 处理简单选项(只有选项没有参数)。用shift命令移动选项。
2. 分离参数和选项。用“--”(双破折号)分隔参数和选项。
3. 处理带值选项。
4. 使用getopt命令。getopt optstring -options parameters, optstring表示所有需要用到的选项字母,带参数的选项字母后面加个冒号。
getopt ab:cd -a -b tes3 -cd test1 test2
-a -b test3 -c -d -- test1 test2
表示有四个选项a,b,c,d, 选项b带参数,后面test1,test2都是参数。
在脚本中使用:set -- 'getopt -q ab:cd "$@"', -q表示忽略错误消息。
但是getopt不擅长处理带空格的参数,可以用getopts命令解决。
getopts optstring variable。 optstring含义同上,若要去掉错误信息,在optstring前面加个冒号。variable保存当前选项值。该命令有两个环境变量,OPTARG表示保存选项后面所跟的参数,OPTIND保存该命令正在处理的选项的位置,结合OPTIND 和shift一起使用来移动命令行参数。
getopts会合理的处理参数之间的空格,并将所有未定义的选项统一输出为问号。解析选项时,会去掉选项前面的破折号。
13.5 将选项标准化
13.6 用户的输入
主要是read命令,在脚本中使用read variable,来获取用户的输入,$varialbe 可以调用用户的输入。
echo -n, -n选项会移掉字符串末尾的换行符,允许用户紧跟其后输入数据。
read 后面可以跟多个变量,以便来获取用户的多个输入,如果用户输入的值多于变量,最后多出的值会统一分配给最后一个变量。
read -p 选项,省略echo命令并制定变量名字,可以多个变量。
如果不指定变量,read命令会将所有接收到的数据都放到特殊环境变量REPLY中。
read -t,-t可以设置超时时间。
read -n,-n选项可以对用户输入的字符计数,-n1 表示只接收用户输入的第一个字符。
read-s,隐藏方式,即用户输入的数据不在屏幕上显示,比如密码。实际上只是将用户输入字符的颜色设置成背景色一样。
cat testfile | while read line 从文件中读入,每次读取一行数据,没有数据时,read命令会退出并返回非零退出状态码。
相关文章推荐
- Vue.js学习笔记——处理用户输入(逆转消息)
- 《Linux命令行与shell脚本》笔记--第13章:处理用户输入
- Linux学习-shell脚本编程基础之处理用户输入
- [shell脚本学习]处理用户输入
- vue学习02--处理用户输入(v-on/v-model/v-show/v-text/v-html)
- Ogre 学习笔记 (一) 处理用户的输入事件 OIS
- Shell脚本学习笔记-用户输入处理
- perl学习2--处理用户输入
- linux shell 处理用户输入
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理)
- 【Oracle学习起步--1】用户解锁及密码输入问题
- C#程序打包与部署,包括处理安装向导中用户输入的参数,创建卸载程序。
- CAD二次开发学习笔记八(用户输入)
- DVB-T2 学习笔记(02) - 输入处理
- ASP.NET学习手记:验证用户表单输入
- JSP学习笔记(三)-----使用JSP处理用户注册和登陆
- WPF and Silverlight 学习笔记(十四):键盘输入、鼠标输入、焦点处理
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) - 转贴自 wolfenstein (NeverSayNever)
- Servlet学习笔记(四)-----使用Servlet处理用户注册和登陆
- 学习数据库:18456用户登录失败的处理