zoukankan      html  css  js  c++  java
  • 交互输入与for语句

    交互输入与for语句

    1、交互输入

    read a b c

     

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

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

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

    read如何输入:

     

    echo”请输入一个目录:

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

    echo”请输入一个目录:”;read变量

    请输入一个目录:etc

    常用参数:

    -p

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

    -t 定义超时时间

         Read –t 5 –p “请输入一个目录:”变量

    脚本默认值

    [!-n $filename]&&filename=”wsq”

    -n 存在为真 –z不存在为真

    输入是否正确-------------------------

               |                                       |

    输入是否正确--------------------   没有输入-------------------------

        |             |                                |                           |

    正确       不正确                   提示必须输入           输出默认值

    fdisk –l 显示所有内容

    -b 判断是否为快文件

    For语句的应用场景:

         有一个功能,这个功能需要循环执行,只是执行对象不同;对象必须是同类数据

    For语句格式:

         a=[‘a’,’b’,’c’]----在python程序中,我们很多情况下,需要调用相应的方法去生成列表;

         for 变量in列表;

                 循环体

          Done

    99乘法表:

          {1..9}

          #!/bin/bash

          for i in `seq 9`;do

                For j in `seq i`do

                    [ $j –le $i ]&& echo –n ”$i*$j=`echo $(($i*$j))` ”

               done

               echo” ”

         done

    echo –n 不换行输出

    echo –e 使echo命令,能够识别特殊字符: 回车不换行 换行符 制表符tab=4个空格

    arp –a 查看当前的所有主机

    seq 1 2 100 中间是步长 输出所有偶数

    列表的生成方式:

    1、直接给出字符串列表

    2、整数列表

         a{start…end}   \{1..1}不行  {1..9}==pythoy range{1,100}

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

                       步长 python range{1,100,2 }

                       Seq 20 30

    3、返回列表的命令

         $(COMMAND)

         场景:ls /var/log/

    4、glob机制

         示例:同上脚本功能

         $(ls /var/log)

          /var/log/*

    Test命令总结:

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

         例如[`du –h $filename|cut –d: -f1`-lt 100k –a –x $filename ]

          test `du –h $filename|cut –d: -f1`-lt 100k –a –x $filename

    注意:做字符串匹配的时候,不支持正则以及通配符

    2、test test=[[ ]]

         在连接两个test的命令的时候,不能使用命令内部option –o –a

         一般使用|| &&== !=

         [[ ]]

    5、变量引用

         $@ $* 将参数做为for循环的列表

         $0---和awk不一样

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

         awk中$0       ----awk按行执行

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

    练习1:写一个for循环—遍历本网络网段中所有up电脑

         #!/bin/bash

         declare –i sum=0

         for i in ${seq 1 100};do      #地址1-100

         ping –c 1 –w 1 10.6.12.$i> /dev/null    #-c 一个包

               if [ $? –eq 0];then

                   let sum++

                   echo”10.6.12.$i 是通的

               else

                   echo”10.6.12.$i 是不通的

         fi

         done

    echo “总共$sum有台电脑在线

    练习2:1到100的偶数和

         #!/bin/bash

         declare –i sum=0

         for i in ${seq 0 2 100};do      #步长为

                   let sum+=$i

         done

    echo “总数为:$sum”

    练习3:判断 /var/log/的所有文件,以log.结尾

         #!/bin/bash

         declare –i sum=0

         for i in ${ls /var/log};do   

               if [ “*.log”= $i];then

                      echo $i     

         let sum++

         fi

         done

    echo ”.log结尾的文件有:$sum”

    练习4:netstat –tan 查看网络状态,统计LISTEN出现的状态次数、ESTABLISHED出现的状态次数

         netstat –tan | grep “^tcp ”| awk ’{print $6}’

         for i in $( netstat –tan | grep “^tcp ”| awk ’{print $6}’);do if [$i =” LISTEN”];then let xxx elif[$i =” ESTABLISHED”];

  • 相关阅读:
    【2018.05.05 C与C++基础】C++中的自动废料收集:概念与问题引入
    【2018.04.27 C与C++基础】关于switch-case及if-else的效率问题
    【2018.04.19 ROS机器人操作系统】机器人控制:运动规划、路径规划及轨迹规划简介之一
    March 11th, 2018 Week 11th Sunday
    March 10th, 2018 Week 10th Saturday
    March 09th, 2018 Week 10th Friday
    March 08th, 2018 Week 10th Thursday
    March 07th, 2018 Week 10th Wednesday
    ubantu之Git使用
    AMS分析 -- 启动过程
  • 原文地址:https://www.cnblogs.com/wsq-qq/p/11359432.html
Copyright © 2011-2022 走看看