shell编程之for循环

文章目录

  • shell编程之for循环
    • 一.for语句
      • 1.什么是for循环
      • 2.for语句的结构
      • 3.for语句中常用转义字符
    • 二.for语句应用示例
      • 1.批量添加用户
      • 2.根据IP地址检查主机状态
      • 三.循环的次数
      • 1.循环次数的格式
      • 2.循环次数示例
        • 2.1求1-100的整数求和
        • 2.2 1-10的偶数求和
      • 3.步长——seq
        • 3.1 1-10的偶的互相加
        • 3.2 1-100 的偶数相加
        • 3.3 1-100的奇数相加
        • 3.4打印九九乘法表
        • 3.4 小于100的整数
        • 3.5判断文件里的用户是否存在
        • 3.6检测指定范围主机是否通信
        • 3.7用户输入密码,脚本判断密码是否正确
        • 3.8十进制数转换成8位数二进制数
        • 3.9用for循环计算

shell编程之for循环

一.for语句

1.什么是for循环

在一定条件之内重复一个动作,可以通过代码需要执行重复执行的动作,节约了大量的时间,提高了脚本的复用率。

2.for语句的结构

读取不同的变量值,用来逐个执行同一组命令

格式:

for 变量名 in 取值对象
do
 命令序列
done

shell编程之for循环_第1张图片

3.for语句中常用转义字符

echo -n:表示不换行输出
echo -e:输出转义字符,将转义后的内容输出到屏幕上
常用的转义字符如下(只有echo -ne)加了e才能执行):
\b:转义后相当于按退恪键(backspace),但前提是"\b"后面存在字符;""b"表示删除前一个字符,""bb"表示删除前两个字符。 
\c:不换行输出,在""c"后面不存在字符的情况下,作用相当于echo -n;但是当""c"后面仍然存在字符时,"kc"后面的字符将不会被输出。in换行,被输出的宁符从"In"处开始另起一行.
\f:换行,但是换行后的新行的开头位詈连接着上一行的行尾;w与f相同;
\t:转以后表示插入tab,即横向制表符;
\r:光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
\表示插入""本身。

二.for语句应用示例

1.批量添加用户

要求:用户名存放在users.txt文件中,每行一个

初始密码均设为123456

验证脚本

for i in $(cat /opt/users.txt)
do
 useradd $i
echo 123456 | passwd --stdin $i
done

shell编程之for循环_第2张图片

2.根据IP地址检查主机状态

要求:IP地址存放在iPadds.txt文件中,每行一个

使用ping命令检测各主机的连通性

并将ping通的地址保存在/opt/hosts.txt文件中

for i in $(cat /opt/ipadds.txt)
do
 ping -c 3 $i
 if [ $? -eq 0 ]
then
 echo $i >> /opt/hosts.txt
fi
done

shell编程之for循环_第3张图片
shell编程之for循环_第4张图片

三.循环的次数

1.循环次数的格式

格式1:

set -x——开启调试模式
for i in {1..5}
do
echo $i
done
set +x————关闭调试模式

shell编程之for循环_第5张图片

格式2:

类c语言写法

for ((i=1;i<=5;i++))
do
echo $i
done

shell编程之for循环_第6张图片

2.循环次数示例

2.1求1-100的整数求和

set -x
sum=0
for ((i=1;i<=100;i++))
do
sum=$[$sum+$i]
echo $sum
done
set +x

shell编程之for循环_第7张图片

2.2 1-10的偶数求和

num1=0
num2=0
for i in {1..10}
do
if (( $i % 2 == 0 ))
then
 num1=$(($num1+$i))
else
 num2=$(($num2+$i))
 fi
done
echo $num1
echo $num2

在这里插入图片描述

3.步长——seq

跳跃,每次加2,一直到10

3.1 1-10的偶的互相加

for i in `seq 2 2 10`
do
 echo $i
done

shell编程之for循环_第8张图片

3.2 1-100 的偶数相加

sum=0
for i in `seq 2 2 100`
do
sum=$(($i+$sum))
done
 echo $sum

在这里插入图片描述

3.3 1-100的奇数相加

sum=0
for i in `seq 1 2 100`
do
sum=$(($i+$sum))
done
 echo $sum

在这里插入图片描述

3.4打印九九乘法表

for i in {1..9}——————————打印行几次循环1-9
do
 for ((j=1;j<=i;j++))——————循环1-9,每次都要小于i
echo -ne "$i*$j=$[$i*$j]\t"———— -n不换行,-e使用转义符
done
echo————每循环一次后从下一行开始
done

shell编程之for循环_第9张图片

3.4 小于100的整数

提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

shell编程之for循环_第10张图片
shell编程之for循环_第11张图片

3.5判断文件里的用户是否存在

用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码;若该用户不存在,提示用户输入密码,建立用户并设立其密码


shell编程之for循环_第12张图片

3.6检测指定范围主机是否通信

检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中

shell编程之for循环_第13张图片
shell编程之for循环_第14张图片
shell编程之for循环_第15张图片
shell编程之for循环_第16张图片

3.7用户输入密码,脚本判断密码是否正确

用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警
shell编程之for循环_第17张图片
shell编程之for循环_第18张图片

3.8十进制数转换成8位数二进制数

使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数

shell编程之for循环_第19张图片
shell编程之for循环_第20张图片

3.9用for循环计算

用for循环算出 某山顶上有一颗香蕉树,一只猴子第一天从树上摘了若干根香蕉,当即就吃了一半,还不过瘾,又多吃了一根。第二天猴子又将剩下的香蕉吃了一半,禁不住诱惑,又多吃了一根香蕉。依此类推,每天都将剩余的香蕉吃一半后再多吃一根。到了第十天,猴子发现只剩一根香蕉了,请问这只猴子在第一天总共摘了多少根香蕉?

shell编程之for循环_第21张图片
在这里插入图片描述

你可能感兴趣的:(linux,java,运维)