📋 个人简介
💖 作者简介:大家好,我是小鹏linux,运维领域新星创作者。😜
📝 个人主页:小鹏linux🔥
🎉 支持我:点赞👍+收藏⭐️+留言📝
💬格言:你未必出类拔萃,但一定与众不同!🔥
📕 系列专栏:
🍎 阶段一:windows基础 目前原创16篇
🍎 阶段二:Linux基础知识 目前原创38篇
🍎 阶段三:shell基础+shell高级 目前原创22篇
🍎 阶段四:python基础及自动化应用 原创未开始
🍎 阶段五:Linux网络服务 原创未开始
🍎 阶段六:集群原理及架构 原创未开始
🍎 阶段七:云计算虚拟化技术 原创未开始
1.for循环**语句 **
**1.1带列表循环 **
for 变量 in 值1 值2 值3 .....
do
程序
done
**1.2类C的for循环 **
for ((初始值;循环控制条件;变量变化))
do
程序
done
**1.3举例:批量解压缩 **
[root@xiaopeng ~]# cat auto-tar.sh
#!/bin/bash
cd /lamp
ls *.tar.gz > ls.log
for i in $(cat ls.log)
do
tar -xvf $i &> /dev/null
done
rm -rf /lamp/ls.log
脚本编写完成后,给脚本执行权限。光盘换成lamp,创建/lamp,把lamp中的内容复制到/lamp中。
**1.4举例:从1加到100 **
[root@xiaopeng ~]# cat for-1-100.sh
#!/bin/bash
s=0
for ((i=1; i<=100; i=i+1))
do
s=$(($s+$i))
done
echo "$s"
**1.5举例:批量添加指定数量的用户 **
[root@xiaopeng ~]# cat useradd.sh
#!/bin/bash
# 批量添加指定数量的用户
# 创建用户默认名
# 创建默认密码。
read -p "Please input user name:" -t 30 name
read -p "Please input the number of users:" -t 30 num
read -p "Please input the password of users:" -t 30 pass
if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ]
then
y=$(echo $num | sed 's/[0-9]//g')if [ -z "$y"]
then
for (( i=1;i<=$num;i=i+1))
do
/usr/sbin/useradd $name$i &> /dev/null
echo $pass | /usr/bin/passwd --stdin $name$i &> /dev/null
done
fi
fi
**1.6举例:批量删除用户 **
[root@xiaopeng ~]# cat userdel.sh
#!/bin/bash
ls /home/ > /tmp/user.txt
user=$(cat /tmp/user.txt)
for i in $user
do
userdel -r $i
done
rm -rf /tmp/user.txt
*2.while循环语句*** **
对while循环来讲,只要条件判断式成立,循环就会一直继续,直到条件判断式不成立循环才会停止。
while [ 条件判断式 ]
do
程序
done
**2.1举例:从1加到100 **** **
[root@xiaopengt ~]# cat while.sh#!/bin/bash
i=1
s=0
while [ $i -le 100 ]
do
s=$(( $s+$i))
i=$(( $i+1))
done
echo "the sum si:$s"
2.2while的另一种格式****,死循环
while true
do
command
done
2.3举例:****循环监测apache
[root@xiaopeng ~]# cat autostart.sh
#!/bin/bash
while true
do
port=$(nmap -sT 192.168.22.222 | grep tcp | grep http | awk '{print $2}')
if [ "$port" == "open" ]
then
echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log
else
/etc/rc.d/init.d/httpd start &> /dev/null
echo "$(date) restart httpd!!" >> /tmp/autostart-err.log
fi
sleep 5 #检测的间隔时间为5秒。
done
**3.****until循环 **
until循环和while循环相反
**4.**exit语句
遇到exit语句的时候脚本直接结束。
1)系统是有exit命令的,用于退出当前用户的登录状态
2)在shell脚本中,exit语句是用来退出当前脚本的。也就是说在shell脚本中,只要碰到exit语句,后续的程序就不再执行,而直接退出脚本。
exit语法:
exit [返回值]
#返回值可以通过$?来查看返回值,范围是0-255。如果exit之后没有定义返回值,脚本执行之后的返回值是执行exit之前,最后执行一条命令的返回值
**5.****break语句 **
遇到break语句的时候循环从当前终止,但不影响脚本内其他语句
5.1举例:break语句
[root@xiaopeng ~]# cat break.sh
#!/bin/bash
for ((i=1; i<=10; i=i+1 ))
do
if [ "$i" -eq 4 ]
then
break
fi
echo $i
done
[root@xiaopeng ~]# . break.sh
1
2
3
[root@xiaopeng ~]#
**6.****continue语句 **
遇到break语句的时候结束当前循环,但是下一次循环照常运行
continue只会退出当次循环,所以并不影响后续的循环,结果就是只会少4的输出。
喜欢的请来个三连支持一下吧,谢谢谢谢!!!
您的支持是我最大的动力!!!
版权归原作者 小鹏linux 所有, 如有侵权,请联系我们删除。