• 交互输入与for语句


    交互输入与for语句

    1、交互输入

      输入:read 变量

      常用参数:

        -p  // 提示

        -t  // 定义超时时间(要写在-p前面)

      脚本默认值:

        当没有输入变量值并想直接向下运行,这时需要默认值;

      输出:echo “”

      常用参数:

        -n  // 取消换行

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

          常用的特殊字符:    

    2、For语句循环

      格式:

        For 变量 in 列表;do

          循环体

        done

        [对象必须是同类数据]

      列表生成方式:

        21直接给出字符串列表

        22整数列表

          a{start ... end}

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

        23返回列表命令

          $(COMMAND)

        24glob机制

          示例:同上脚本功能

        2、5变量引用

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

    3、case语句

         -- 做匹配
            case语句的语法格式:

            case 变量 in
            PATTEN1)
                代码块1
                ;;
            PATTEN2)
                代码块2
                ;;
            *)
                代码库
            esac

       例:

        1)、文件判断脚本

        

    #!/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    

        2)、九九乘法表

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

        第二种方法

    #!/bin/bash
    # 99乘法表
    for i in {1..9};do
        for j in {0..$i} ; do   ??
            echo -n -e "$j*$i=$[$i*$j]	"
        done
        echo
    done    

         3)、写一个for循环,遍历本网络网段中所有up的电脑

    #!/bin/bash
    # 遍历
    declare -i sum=0
    for i in $(seq 1 100);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
    echo "总共有 $sum 台电脑在线"    

        4)、求1到100偶数和

    #!/bin/bash
    # 偶数和
    declare -i sum=0
    for i in $(seq 0 2 100);do
        let sum+=$i
    done
    echo “总数为:$sum

        5)、判断 /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` -lt 100K -a -x $filename ]    
                            test `du -h $filename | cut -d: -f1` -lt 100K -a -x $filename
                    注意:做字符串匹配的时候,不支持正则以及通配符
                2)、test test ==  [[  ]]
                    再连接两个test的命令的时候,不能使用命令内部option  -o -a
                    一般使用  ||   &&  ==  !=  >=  <=
                    [[ yum.log == *.log ]]
                        

        5、变量引用
            $@  $*  将参数做为for循环的列表

  • 相关阅读:
    CentOS7 FTP安装与配置
    EF CodeFirst 数据库的操作
    CentOS7 防火墙(firewall)的操作命令
    小程序学习(四)小程序逻辑层之注册页面
    小程序学习(三)小程序逻辑层的注册程序和场景值
    小程序学习(二)基本结构与文件的类型
    VS2015 无法启动IIS Express Web服务器(已解决)
    django 2.接口之工作原理
    django 1.开发接口环境搭建
    pytest 15 fixture之autouse=True
  • 原文地址:https://www.cnblogs.com/yxq-123/p/11360352.html
Copyright © 2020-2023  润新知