zoukankan      html  css  js  c++  java
  • shell脚本基础 循环机构

    循环结构

    for循环格式一
    格式:
    for 变量 in 值1 值2 ........(值不一定是数字,可以是命令或者其他的)
    do
    命令
    done


    [root@ceshiji ~]# vim a.sh
    #!/bin/bash
    for x in `seq 1 255`
    do(for循环整体要用do开始)
    ping -c 10 -x 0.1 192.168.4.$x &>/dev/null(ping192.168.4.0网段的主机)
    if [ $? -eq 0 ];then(判断上一个命令是否等于0)
    echo "$x is up" >up.txt(等于显示up并把结果放入up.txt文件)
    else
    echo "$x is down" >down.txt(不等于显示down并把结果放入down.txt文件)
    fi
    done(done结束)

    [root@ceshiji ~]# vim a.sh
    #!/bin/bash
    for x in 1 88 3 90
    do
    echo $x
    done
    for x in a da ads ffd
    do
    echo $x
    done
    for x in a b c
    do
    echo hello
    done

    实例:用脚本循环将/var/log/所有内容tar打包
    [root@ceshiji ~]# vim a.sh
    #!/bin/bash
    for x in `ls /var/log`
    do
    tar -czf $x.tar /var/log/$x
    done

    for循环格式二
    for ((x=1;x<=5;x++)) //++表示值本身叠加+1,--表示值本身叠加-1
    do
    echo $x
    done

    [root@ceshiji ~]# vim a.sh(用脚本写乘法口诀表)
    #!/bin/bash
    for ((x=1;x<=9;x++))
    do
    for ((y=1;y<=x;y++))
    do
    echo -n "$x*$y=$((x*y)) " //echo -n:不换行
    done
    echo
    done

    while循环条件式循环,反复测试条件,只要成立就执行命令
    格式:
    while [ 判断 ]
    do
    命令
    done

    死循环:
    while :
    do
    命令
    done

    实例:
    用脚本写个小程序,
    查看cpu
    查看内存
    查看硬盘
    查看ip

    [root@ceshiji ~]# vim a.sh
    #!/bin/bash
    while :
    do
    echo "1.查看cpu
    2.查看内存
    3.查看磁盘
    4.查看ip
    5.退出
    read -p "输入指令1-5:" x
    if [ $x -eq 1 ];then
    echo "CPU工作频率如下:"
    cat /proc/cpuinfo |grep MH
    read -p "按回车键继续"
    elif [ $x -eq 2 ];then
    echo "内存如下:"
    free |grep +
    read -p "按回车键继续"
    elif [ $x -eq 3 ];then
    echo "磁盘数据如下:"
    df -h
    read -p "按回车键继续"
    elif [ $x -eq 4 ];then
    echo "ip如下:"
    ifconfig
    read -p "按回车键继续"
    elif [ $x -eq 5 ];then
    exit
    fi
    done

    ——————————————————————————————————
    case语句
    case语句 == if语句
    格式:
    case 变量 in
    值1)
    命令;;
    值2)
    命令;;
    值3)
    命令
    esac

    [root@ceshiji ~]# vim a.sh
    #!/bin/bash
    case $1 in
    a-z)
    echo zimu;;
    0-9)
    echo shuzi;;
    *)
    echo "fuhao"
    esac

    ————————————————————————————————————————
    函数[避免重复的代码]

    定义函数
    函数名(){
    命令
    命令
    }
    调用函数
    函数名

    [root@ceshiji ~]# vim b.sh
    #!/bin/bash
    mymkdir(){
    mkdir $1
    cd $!
    echo "ok"
    }
    mymkdir

    脚本的中断:
    cintinue:跳转到下一步执行
    break:结束循环(只对循环有作用)
    exit:退出
    [root@ceshiji ~]# vim a.sh
    #!/bin/bash
    for i in {1...5}(i赋值1到5)
    do
    [ $i -eq 3 ] && continue(判断如果i等于3 跳转到下一步执行)
    echo $i
    done

    [root@ceshiji ~]# ./a.sh
    1
    2
    4
    5

    [root@ceshiji ~]# vim a.sh
    #!/bin/bash
    for i in {1..5}
    do
    [ $i -eq 3 ] && break(结束循环,只对循环有作用)
    echo $i
    done
    echo ok
    [root@ceshiji ~]# ./a.sh
    1
    2
    ok
    ————————————————————————————————————————

  • 相关阅读:
    【BZOJ2844】albus就是要第一个出场 高斯消元求线性基
    Python入门之面向对象module,library,package之间区别
    Python入门之字典的操作详解
    Python Web学习笔记之TCP/IP协议原理与介绍
    Python Web笔记之高性能网络编程
    Python Web学习笔记之面试TCP的15个问题
    Python Web学习笔记之TCP/IP、Http、Socket的区别
    Python Web学习笔记之TCP、UDP、ICMP、IGMP的解释和区别
    Python Web学习笔记之IGMP和ICMP的差别
    Python设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7246770.html
Copyright © 2011-2022 走看看