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 ##支持加反斜线转义的字符(例如 是水平制表符)
实例:
直角三角形

 

 

  

原文地址:https://www.cnblogs.com/tianzhendengni/p/14002614.html