shell脚本8-15

交互输入与for语句(8-15)

交互输入

1、read的用法:read命令同时可以定义多个变量值,而输入的内容默认可以空格为分配符,将值输入到对应的变量中;如果默认值过多最后所有的值都会被赋予给最后一个变量

2、如果默认是过少,多余的变量则为空值。

3、实例 read a b c   aa bb cc

4、Read如何输入:echo “请输入一个目录”(我们需要echo -n取消换行符号)

                 Echo “请输入人一个目录:”read变量(请输入一个目录/etc)

5、常用参数:-p  例:read -p “请输入一个目录”变量

        -t:定义超时时间   例:read -t 5 -p“请输入一个目录:”变量

6、脚本默认值:

练习:

输入一个设备文件,输出这个设备文件的基本信息。

#!/bin/bash
#输入一个设备文件,输出这个设备文件的基本信息。

read -t 5 -p "请输入一个设备文件名:" devname
[ -z $devname ] && devname=`fdisk -l`
if [ -b /dev/$devname ];then
        fdisk -l /dev/$devname
        exit 0
else
        echo "$devname不是设备文件"
        echo "Usage:'请输入一个设备文件,如sda'"
fi

执行结果:

7、case语句的语法格式:

case  变量  in  

PATTEN1)

  代码块1

  ;;

PATTEN2)

  代码块2

  ;;

*)

  代码库

esac

For语句循环

1、应用场景:有一个功能,该功能需要循环执行,只是循环的对象不同,但是循环对象是同类数据

2、for语句格式:

for 变量 in 列表;do

   循环体

Done

3、echo命令参数:-e:使echo命令能够识别特殊字符

          \r:回车不换行

          \n:换行且光标移至行首

          \t:制表符(tab键)

         -n:不换行输出

4、列表的生成方式:1、直接给出字符列表(例:for i in a b c d e f;do)

          2、整数列表  a{start....end}   

                 b seq命令引用$(seq [start[step]] end)

                 (seq最常用功能的就是步长)

          3、返回列表的命令(例:$(命令))        

          4、glob机制----文件名通配符的机制

          5、变量应用----传参:$@ $*将参数作为for循环的列表

               $0和awk不一样,bash中的$0代表运行的脚本文件

               Awk中的$0代表整行内容 ----awk按行执行

               需要多个词的时候用“$@”,需要一个词的时候用“$”

5、vim常见用法:命令模式下dd为剪切,yy为复制,p为粘贴

6、test命令总结:1、test的命令的参数-a、-o只在命令中使用;注:做字符匹配时不支持正则表达式和通配符

         2、test test==[[]],在连接两个test的命令的时候,不能使用命令内部的参数-a、-o,一般使用|| && == != >= <=

 

 

 

 

 

posted on 2019-08-15 19:44  cqyyyyy  阅读(139)  评论(0编辑  收藏  举报