shell 脚本练习之 while ,for 循环
1.计算从1到100所有整数的和
方法一:
复制 #!/bin/bash
a = 1
sum = 0
while [ $a -le 100 ]
do
sum = $[ $a +$sum ]
let a++
done
echo "从1 到 100 的整数和为$sum "
方法二:
复制 sum = 0
for i in { 1 .. 100 }
do
sum = $[ $sum +$i ]
done
echo "从1 到100 的整数和为 $sum "
方法三
复制 #!/bin/bash
sum = 0
for (( i= 1 ; i<= 100 ; i++ ))
do
sum = $[ $sum +$i ]
done
echo "从1 到100 的整数和为 $sum "
2.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和(不考虑非整数)
方法一:
复制 #!/bin/bash
sum = 0
read -p "(请输入数字,0~99):" num
[ $num -eq 0 ] && echo "从1 到0 的值为1" && exit
if [ [ $num -gt 0 && $num -lt 100 ] ] ; then
for i in $( seq 1 1 $num)
do
sum = $[ $i +$sum ]
done
echo "从 1 到 $num 的和是 $sum "
else
echo "请正确输入(整数0~100)"
fi
方法二:
复制 #!/bin/bash
read -p "请输入数字1~99:" num
[ $num -eq 0 ] && echo "从1 到0 的值为1" && exit
if [ [ $num -lt 100 && $num -gt 0 ] ] ; then
sum = 0
i = 0
while [ $i -le $num ]
do
sum = $[ $i +$sum ]
let i++
done
echo "从1 到 $num 的值是 $sum "
else
echo "请正确输入(整数0~99)"
fi
3.求从1到100所有整数的偶数和、奇数和
方法一
复制 #!/bin/bash
jisum = 0
ousum = 0
for a in $( seq 1 2 100 )
do
jisum = $[ $jisum +$a ]
done
echo "奇数和是 $jisum "
for b in $( seq 2 2 100 )
do
ousum = $[ $ousum +$b ]
done
echo "偶数和是 $ousum "
方法二:
复制 #!/bin/bash
oushu = 0
jishu = 0
for i in { 1 .. 100 }
do
if [ $[ i % 2 ] -eq 0 ] ; then
oushu = $[ $oushu + $i ]
else
jishu = $[ $jishu + $i ]
fi
done
echo "偶数和为$oushu "
echo "奇数和为$jishu "
方法三:
复制 #!/bin/bash
jisum = 0
ousum = 0
for (( i= 1 ; i<= 100 ; i+= 2 ))
do
jisum = $[ $jisum + $i ]
done
for (( i= 2 ; i<= 100 ; i+= 2 ))
do
ousum = $[ $ousum + $i ]
done
echo "奇数和为:$jisum "
echo "偶数和为:$ousum "
4.执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
复制 #!/bin/bash
read -p "请输入用户名:" name
id $name &> /dev/null
if [ $? -eq 0 ] ; then
echo "用户$name 已经存在"
else
read -p "请输入$name 用户密码:" Passwd
if [ ! -z $Passwd ] ; then
useradd -m -p "$Passwd " $name
echo "用户$name 创建成功"
else
echo "您没有输入用户$name 的密码"
fi
fi
5.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
复制 #!/bin/bash
for n in 192.168 .23.{ 1 .. 25 }
do
{
ping -c 3 -i 0.5 -w 2 $n &> /dev/null
if [ $? -eq 0 ] ; then
echo "$n is online" >> /root/host_ip
else
echo "$n is offline" >> /root/host_ip
fi
} &
done
wait
cat /root/host_ip
6.用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
复制 #!/bin/bash
cishu = 0
while [ $cishu -lt 3 ]
do
read -p "请输入密码:" First_Passwd
read -p "请再次输入密码:" Second_Passwd
if [ "$First_Passwd " == "$Second_Passwd " ] ; then
echo "密码正确"
echo "之前密码输入错误$cishu 次"
exit
else
echo "密码错误"
let cishu++
fi
done
echo "警告!!密码输入错误次数过多"
7.编写能够自动生成一个8位随机密码的脚本
复制 #!/bin/bash
a = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
for i in { 1 .. 8 }
do
num = $[ RANDOM % ${# a} ]
Pass = ${a: num: 1} $Pass
done
echo $Pass
8. mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt,输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件
复制 #!/bin/bash
OLDIFS = $IFS
IFS = $IFS ':'
for i in $PATH
do
folder = $( find $i -type d )
for d in $folder
do
echo $d
done
file = $( find $i -type f )
for f in $file
do
if [ ! -x "$f " ] ; then
echo "--- $f "
fi
done
done
IFS = $OLDIFS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现