14 shell脚本--006交互输入与for语句

1、交互输入

  read  

    read 命令同时可以定义多个变量值,而输入的内容默认以空格为分隔符,将值输入到对应的变量中;

    如果默认值过少,最后所有的值都会被赋予给最后一个变量;

    如果默认值过多,多余的变量则为空值;     

    >read a b c

      >aa bb cc 

    read如何输入:

      (1)echo "请输入一个目录:"

        我们需要echo -n取消换行符号

       (2)echo "请输入一个目录:"; read  +变量

          请输入一个目录:/etc/

    常用参数:

      -p

        read - p  "请输入一个目录:" + 变量

      -t

        read  -t 5 -p "请输入一个目录:" + 变量

    脚本默认值

        

2、for语句循环

  for语句的应用场景:

    有一个功能,这个功能需要循环执行,只是执行的对象不同;

  for语句格式:

    for 变量 in 列表;do

      循环体

    done  

练习:九九乘法表:

(1)方法一:

(2)方法二:

  echo -e 

    -e:使echo命令,能够识别特殊字符

     : 回车不换行

     : 换行符

     :制表符tab = 4个空格

    unix2dos    -->

    dos2unix

  case语句:

    case的语法格式:

      case 变量 in

      PATTEN1)

        代码块1

          ;;     

      PATTEN2)

        代码块2

          ;;

      *)

  列表的生成方式:

    1、直接给出字符串列表

      for i in a b c d e;do 

        循环体

      done

    2、整数列表  

      a 、{start ... end}    //{1...1}是不行的 = python   range{1,100}

      b 、seq命令引用   $seq[start ... end]

        步长  python  range{1,100,2}

练习:ping有多少台电脑在线

           

                

  3、返回列表的命令

    $(command)

    应用场景:ls /var/log

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

      $(ls /var/log)

      /var/log/*

     test命令总结:

        1、test的命令的option的-a -o 只在命令中使用;

            

   5、变量引用---传参

      $@  $*  将参数作为for循环

      $0  ----和awk的不一样

        bash中的$0   代表运行的脚本文件;

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

      

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

  扩展:for语句的另外一种写法:

      基于c语言的for语言写法:

        for 变量 in 列表;do

            循环体

        done  

        优点:不易进入死循环

      

      for((i=0;i<10;i++))

      for((初始条件;条件判断语句;值变化语句))  

        循环体

      done

    

    while语句的格式:

      i = 0 (因为机器识别数字是从0开始的)

      初始值

      while 条件 ;do

        循环体

        let i++

      done        

原文地址:https://www.cnblogs.com/wx00/p/11356936.html