linux shell 学习之第13章 处理用户输入

原创 2016年08月29日 22:41:12

第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命令会退出并返回非零退出状态码。

相关文章推荐

《Linux命令行与shell脚本》笔记--第13章:处理用户输入

13.1 命令行参数 命令行参数:允许在运行脚本时向命令行添加数据值 $ ./addem 10 3013.1.1 读取参数 bash shell会将一些称为位置参数的特殊变量分配给命令行输入的所有参数...

linux shell读取用户输入

变量 1 [hadoop@master test]$ name=yunix [hadoop@master test]$ echo $name yunix  2 [hadoop@master t...

linux shell获取用户输入指定范围的单个字符的两种方法

用shell实现的,要求获取用户输一个字符a-zA-Z实现方法。 方法一: echo `echo {a..z}``echo {A..Z}` > /tmp/letterfile while re...

Linux Shell学习:使用read从标准输入中读取一行

http://www.lampbo.org/category/linux-xuexi/page/4 Linux Shell学习:使用read从标准输入中读取一行 ...

学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第13章 学些shell script 笔记

看了很长时间,终于看到Shell Script了。加油吧!
  • spyiu
  • spyiu
  • 2014年07月11日 11:49
  • 1200

linux学习之--Linux shell的标准输入、输出和错误

1.文件描述符 在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名: 文件 ...
  • viease
  • viease
  • 2015年04月08日 13:27
  • 371

Linux Shell学习笔记

  • 2015年08月03日 08:40
  • 107KB
  • 下载

linux shell学习

  • 2015年03月27日 09:59
  • 336KB
  • 下载

Linux Shell 输入和输出

在shell脚本中,可以用几种不同的方式读入数据:可以使用标准输入—缺省为键盘,或者指定一个文件作为输入。对于输出也是一样:如果不指定某个 文件作为输出,标准输出总是和终端屏幕相关联。如果所使用命令出...

linux shell 学习

  • 2012年12月11日 14:51
  • 31.5MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux shell 学习之第13章 处理用户输入
举报原因:
原因补充:

(最多只允许输入30个字)