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

来源:互联网 发布:php检查类是否存在 编辑:程序博客网 时间:2024/06/05 03:22

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

0 0
原创粉丝点击