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”];

  • 相关阅读:
    c++ 利用new动态的定义二维数组
    golang在linux后台执行的方法
    Linux安装配置go运行环境
    SpringCloud 笔记
    你真的了解 Unicode 和 UTF-8 吗?
    Elasticsearch 系列文章汇总(持续更新...)
    Maven 的依赖范围
    在 centos 上安装 virutalbox
    Java 异常总结
    使用 RabbitMQ 实现异步调用
  • 原文地址:https://www.cnblogs.com/wsq-qq/p/11359432.html
Copyright © 2011-2022 走看看