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

    交互输入与for语句
    1、交互输入
        read Python中用input()函数进行输入;

        read命令同时可以定义多个变量值;而输入的内容默认为

        示例:read a b c
            aa bb cc
        read如何输入:
          echo"请输入一个目录:"
          我们需要echo -n 取消换行符
          echo"请输入一个目录:",read 变量
          请输入一个目录: etc

          常用参数:
            -p
            read -p "请输入一个目录"变量
            -t 定义超时时间
            read -t 5 -p “请输入一个目录”变量

          脚本默认值:
            [! -n $filename ]
            filename="dsasgg"

          输入内容

    2、for语句循环
      文件判断脚本:
        #!/bin/bash
        #
        read -p "输入一个文件名:"name
        if [ -z $name ];then
        echo"usage:输入一个文件名: /etc/fstab"
        exit 1
        fi

        if [ -e $name ];then
        echo"输入的文件不存在!"
        exit 2
        elif [ -f $name ];then
        echo "$name is a file"
        elif [ -d $name ];then
        echo"$name is a dir"
        elif [ -b $name ];then
        echo"$name is a block file"
        elif [ -L $name ];then
        echo"$name is a Link file"
        else
        echo "$name 是其它文件类型"
        fi

      for语句的应用场景:
        有一个功能,这个功能都需要循环执行,只是执行的对象不同(对象必须是同类数据)
        优点:不易进入死循环

      for语句格式:
        在python程序中,我们很多情况下,需要调用响应的方法去生成列表;
        for 变量 in {列表};do
        循环体
        done

    99乘法表:
      #!/bin/bash
      #
      for i in `seq 9`;do
      for j in `seq 9`;do
      [ $j -le $i ] && echo -n "$i * $j=echo `$(($i*$j))`"
      done
      echo " "
      done

      for语句循环的另外一种写法:
        基于C语言格式for语句写法:
        for((初始条件;条件判断语句;条件值变化语句));do
        循环体
        done


      #while语句的格式
        初始值
        while 条件;do
        循环体
        let i++ //变化初始值
        done

        #
        echo -e
        -e 使echo命令能够识别特殊字符;
        -r 回车不换行
        -n 换行符
        -t 制表符

      列表的生成方式:
        1、直接给出字符串列表

        2、整数列表
        a{start...end} {1..1}这种写法是不行的
        b seq 命令引用 $(seq [start [step] end])
        步长 python range{1.100,2}2表示步长
        seq 20 30

    题目:写一个for循环,遍历本网络网段中所有up的电脑
    #!/bin/bash
    #
    declare -i sum=0

    for i in $(seq 1 254);do
    ping -c 1 -w 1 10.6.12.$i &> /dev/null
    if [ $? -eq 0 ];then
    let sum++
    echo"10.6.12.$i 是通的"
    else
    echo"10.6.12.$i 不通"
    fi
    done

    题目:1到100的偶数和:
    #!/bin/bash
    #
    declare -i sum=0
    for i in $(seq 0 2 100);do
    let sum+=$i
    done

    echo "总数为:$sum"


    3、返回列表的命令
        $(COMMAND)
        应用场景: ls /var/log
        题目:判断/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 个"

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

    4、glob机制--文件名通配符的机制
        $(ls /var/log)
        /var/log/*

      test命令总结:
        1、test命令的option的 -a -o 只能在命令中使用;
        例如: [ `du -h $filename |cut -d: -f1` -eq -lt 100k -a -x $filename]   
        注意,做字符串匹配的时候不支持正则以及通配符
        2、test test = = [[ ]]
        在链接两个test命令的时候,不能使用命令内部option [-o -a]
        一般使用&& || == != >= <=
          ex:[[ yum.log = = *.log ]]


    5、变量引用 - - 传参
        $@ $* 将参数作为for循环的列表
        需要用多个词的时候用"$@"
        需要用一个词的时候用"$*"
        $0 和awk不一样
        bash中$0代表运行的脚本文件
        awk中$0代表整行内容 --awk按行执行

  • 相关阅读:
    触发器和存储过程简述
    sql笔记
    AES加密解密代码
    动态获取实体类及类中方法
    springboot metrics elk
    深入浅出Spring Security
    RandomValueStringGenerator
    ExceptionUtils
    spring.main.web-application-type: none
    excel前80%平均分
  • 原文地址:https://www.cnblogs.com/liuyuanzzz/p/11365240.html
Copyright © 2011-2022 走看看