zoukankan      html  css  js  c++  java
  • shell脚本--循环语句、(概念及实例)

    shell脚本–循环语句、函数和数组

    一、循环语句

    1.1for语句的结构

    ●读取不同的变量值,用来逐个执行同一组命令
    ●for循环:指定次数循环;遍历:把集合中的每个元素挨个读取一遍

    结构一:遍历集合
    for 变量名 in 取值列表
    do
         命令序列
    done
    结构二:指定次数
    for ((i=1;i<=5;i++))
    do
        命令序列
    done
    

    1.2for语句应用实例

    实例1:
    批量添加用户
    用户名存放在user.txt文件中,每行一个
    初始密码均设为123123

    [root@server1 ~]# sh user.sh
    更改用户 zhangsan 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    创建zhangsan成功
    更改用户 lisi 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    创建lisi成功
    更改用户 wanger 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    创建wanger成功
    更改用户 mazi 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    创建mazi成功
    [root@server1 ~]# 
    

    实例2:
    根据IP地址检查主机状态
    IP地址存放在ip.txt文件中,每行一个
    使用ping命令检测各主机的连通性  

    [root@server1 ~]# sh ping.sh
    PING 20.0.0.20 (20.0.0.20) 0(28) bytes of data.
    8 bytes from 20.0.0.20: icmp_seq=1 ttl=64
    8 bytes from 20.0.0.20: icmp_seq=2 ttl=64
    8 bytes from 20.0.0.20: icmp_seq=3 ttl=64
    
    --- 20.0.0.20 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2001ms
    
    主机20.0.0.20存活
    PING 20.0.0.30 (20.0.0.30) 0(28) bytes of data.
    
    --- 20.0.0.30 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2002ms
    
    主机20.0.0.30宕机
    PING 20.0.0.40 (20.0.0.40) 0(28) bytes of data.
    8 bytes from 20.0.0.40: icmp_seq=1 ttl=64
    8 bytes from 20.0.0.40: icmp_seq=2 ttl=64
    8 bytes from 20.0.0.40: icmp_seq=3 ttl=64
    
    --- 20.0.0.40 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2005ms
    
    主机20.0.0.40存活
    PING 20.0.0.70 (20.0.0.70) 0(28) bytes of data.
    
    --- 20.0.0.70 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2004ms
    
    主机20.0.0.70宕机
    

     

    1.3for语句中使用(( ))

    使用以下符号需要先加let或者两个小括号((sum+=$i))
    符号后面可以跟整数,也可以跟调用的变量
    ++ 自身变量加1 – 自身变量减1
    +=5 自身变量加5 -=5 自身变量减5
    *=5 自身变量乘5 /=5 自身变量除5
    %=5 自身变量取余5
    实例1:
    在屏幕上输出1-10

    1.4while语句的结构

    重复测试某个条件,只要条件成立则反复执行
    注意:
    if条件成立只执行一次,而while成立了会反复执行,直到不成立
    for可以先定义一个集合,再通过临时变量进行遍历
    实例1:
    批量创建5个用户:
    用户名以stu开头,按数字进行编号,即st1、st2……
    初始密码均为123123

     实例2:
    输出1-100不能被3整除的数

    1.5双重循环

    外层循环控制行;内层循环控制列
    外层循环执行一次,内层循环执行一遍
    打印一个直角三角形
    echo -n ##不换行输出
    echo -e ##支持加反斜线转义的字符(例如 是水平制表符)
    实例:
    直角三角形

     

     

      

  • 相关阅读:
    SRM 551 div2
    HDU_4390 Number Sequence (容斥原理)
    HDU 多校联合第五场
    HDU 多校联合第六场
    POJ 2057 The Lost House (经典树形dp)
    Lucas定理
    HDU 4385 Moving Bricks (状态dp+贪心)
    HDU 多校联合第三场
    当最短路变成二维 _!
    POJ 1848 (一道不错的树形dp)
  • 原文地址:https://www.cnblogs.com/tianzhendengni/p/14002614.html
Copyright © 2011-2022 走看看