for语句的应用场景
有一个功能,这个功能需要循环执行,只是执行对象不同;【对象必须是同类数据】
for语句格式
for 变量 in 列表;do
循环体
done
99乘法表“
#!/bin/bash
#
for i in `seq 9`;do
for j in `seq $i`;do
echo -e -n "$i * $j = $(($i*$j)) "
done
echo ""
done
列表生成方式:
1.直接给出字符串列表
2.整数列表
a{start ... end}
seq 20 30
练习:写一个for循环遍历本网络中所有的up的网点
#!/bin/bash
#遍历本网络中up的网点
declare -i sum=0
for i in $(seq 1 254);do
ping -c 1 -w 1 10.6.12.$i &> /dev/null
if [ $? -eq 0 ];then
echo "10.6.12.$i 是upde"
let sum++
fi
done
echo "本网络中有$sum 台网点up"
b seq 命令引用 $(seq [start [step]]end)
3.返回列表的命令
$(COMMAND)
应用场景:ls /var/log/
题目:判断/var/log/所有文件,以.log结尾的文件统计处理,并显示:
#!/bin/bash
#
declare -i sum=0
for i in $(ls /var/log/);do
if [[ $i == *.log ]];then
let sum++
echo $i
fi
done
echo "共有$sum 个"
题目:netstat -tan 查看网络状态,统计LISTEN出现的次数,ESTABLISHED出现的次数,
test命令总结:
1.做字符串匹配的时候不支持正则以及文件通配符
2.可以用[[ ]]
4.glob机制
$(ls /var/log)
5.变量引用
$@ $* 将参数作为for循环的列表
$0 -- 和awk的不一样
bash中$0代表运行的脚本文件
awk中$0代表
扩展:for语句的另外一种写法
基于c语言格式的for语句写法:
for((i=0;i<=10;i++));do
循环体
done
九九乘法表:
while语句的格式:
初始值
while 条件;do
循环体
变化初始值
done