shell脚本编程-循环(for循环)
知识回顾:
创建一个shell脚本规则
执行脚本
变量
测试
运算
if :单分支、双分支、多分支
实例:
剪刀石头布
检测主机是否存活
判断成绩
循环: for while case(分支编写的脚本) 函数
学习shell注意:
shell是一门只针对于linux的脚本语言
知识放空
重点是学习他的语法结构
例: if 命令或者条件判断
then
执行语句
fi
for循环:
语法结构:
- for 变量名 in 列表值
do
执行命令
done - for 变量名 in
命令
或者$(命令)
do
执行命令
done - for 变量名 in {1…5}
do
执行命令
done - for 变量名 in
seq 5
do
执行命令
done
实例:批量检测主机的存活状态:
知识点:
ping 命令:
-c 可以设置oing的次数
-i 设置ping之间的时间间隔(单位秒)
-w ping不通的超时时间
网段:59.233.65.0/24 255个主机
#vim checkhosts.sh
#! /bin/bash
for i in {1..254}
do
ping -c 3 -i 0.2 -w 1 49.233.65.$i> /dev/null
if [ $? -ep 0 ] ;then
echo "host 49.233.65.$i is up"
else
echo "host $host is down"
fi
done
运算符:
expr 整数运算
bc 支持小数
$ ((算数表达式))
a=10
b=2
c=$ ((
a
+
a+
a+b ))
let :
运算不能空格
如果非要有空格,用双引号引起来
#let i=i+5
#echo $i
5
i++ --> i=i+1 --> i+=1
i-- --> i=i-1 --> i-=1
++i
运算顺序不一样
随机抽查姓名的脚本:
执行脚本之后,输出随机的一个姓名,姓名在一个文档中存储。
name.txt
1.数组 a=(cat /root/name.txt
)
2.随机
b=cat /root/name.txt | wc -l
//统计多少行
c=
[
R
A
N
D
O
M
[RANDOM%
[RANDOMb] 0-69
${a[]}
#!/bin/bash
jw=( ‘马世琛’‘
孙明磊’‘
王浩楠 ‘‘
赵新宇’‘
祁雪宁’
‘杜炳辉’‘
陈楠
‘‘ 张亚锋’‘
王旭阳’‘
张春起’‘
张
旭阳’‘
刘辰龙’‘
张世杰’‘
李豪杰’‘
赵佳豪’
‘王博玉’‘
李天星’‘
李世东’‘
刘喆’ ‘
潘锴
‘‘张晓航’
‘高星雨’‘
韩程远’‘
刘百会’‘
周孟浩’‘
杨占松’
‘黄建平’‘
韩晓东’‘
王宏箫
‘‘ 常梦丽’‘
贺艳梅’
‘周雪龙’‘
黄家旺’‘
王承志’‘
曹寅
赵’‘ 炎
张正’
‘张露凡’‘
康家豪’‘
赵文超 ‘‘
刘硕承’‘
苏桐’
‘冯佳伟 ‘‘
王泽华’‘
罗淋’‘
齐鑫
‘‘韩蓄’‘
蒋帅飞’
‘张凯’‘
贾一帅’‘
杨旭华’‘
郑子鹏’‘
冯清叶’
‘申宇宽’‘
王有森’‘
翟成龙 ‘‘
智乾’‘
欧洪波’
‘王紫翔’‘
寇长福’‘
王宇鹏’‘
赵泽朋’‘
刘晓瑞’
‘冯晓如’‘
李志红’‘
郭凤翔’‘
张泽康’‘
董乾毅’
‘
汪栋’‘
顿多姿
’ ) #定义数组
a=$(( $RANDOM % 69 )) #生成 0~68 的 随机数 $RANDOM 为随机变量
echo ${jw[a]} #输出数组 数组下标从0开始
1.数组:
定义:
a=(hah nihao hello)
a[0]=hi
a=(hi nihao hello)
b=()
for i in cat/root/name.txt
do
b[
j
]
=
j]=
j]=i
let j++
done
1.用shell打印九九乘法表
for循环
echo “”
for i in seq 9
//定义外循环(决定行数)
do
for j in seq $i
//定义内循环(决定列数)
do
echo -n "$j * $i = $[i*j] "
done
echo “”
done
2.shell输出20斐波那契数列
3.shell写出一个判断闰年交互是脚本,可以判断三次
#! /bin/bash
list=(0 1)
for i in seq 2 11
do
list[$i]= expr ${list[-1]} + ${list[-2]
done
echo ${list[@]}
#! /bin/bash
for i in {1…3}
do
read -P“请输入年份1”y
if [
[
[
[y%4] -eq 0 ]
then
echo "
y
是
闰
年
"
e
l
s
e
e
c
h
o
"
y是闰年" else echo "
y是闰年"elseecho"y不是闰年”
fi
done