![在这里插入图片描述](https://img-blog.csdnimg.cn/ccd9828749df43f689fe3ad43f84580a.png#pic_center)
👨🎓博主简介
🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
🍁 if 判断🍁 if 判断格式:🍁 if 判断实例:🍃 单条件判断实例:判断是否为整数🍃 多条件判断实例:成绩及格否🍃 单行if判断实例:判断是否有这个文件或目录🍃 单行if判断实例:判断这个目录中是否存在文件(前提是有这个目录)
🍁 for 循环🍁 for 循环格式:🍁 for 循环实例:🍃 需求1:打印10以内的偶数-->能被2整除,除2余数为0🍃 需求2:循环创建文件cs{1..100}🍃 需求3:从变量中取遍历的值🍃 需求4:从命令中取值🍃 需求5:for循环自增自减🍃 需求5.1:批量创建cs1-cs10用户🍃 需求5.2:输出数字
a
自增、
a自增、
a自增、b自减🍃 需求5.3:循环20次zabbix调用
🍃 需求6:批量创建用户,密码默认为123456
🍁 while 循环🍁 while 循环格式:🍁 while 循环实例:🍃 需求1:计算1到100正整数的和🍃 需求2:批量创建用户,密码默认为123456🍃 需求3:提示用户输入字符,如果是小写就把字母全部变为大写,如果是quit则退出脚本🍃 需求4:无限循环执行zabbix_get调用命令
🍁 case 循环判断🍁 case 循环判断格式:🍁 case 循环判断实例:🍃 nginx服务启停脚本:函数 + case
相关文章:
🍁 if 判断
🍁 if 判断格式:
#单条件判断
if [ 条件测试 ];then
执行代码
fi
if [ 条件测试 ];then
执行代码
eles
执行代码
fi
#多条件判断
if [ 条件测试 ];then
执行代码
elif [ 条件测试 ];then
执行代码
eles
执行代码
fi
#单行if判断
if [ 条件测试 ]; then 执行代码; else 执行代码; fi
🍁 if 判断实例:
🍃 单条件判断实例:判断是否为整数
#!/bin/bash
read -p "please input a number:" num
expr 10 + $num &>/dev/null
if [ $? -eq 0 ];then
echo "${num}是整数"
else
echo "${num}不是整数"
fi
![在这里插入图片描述](https://img-blog.csdnimg.cn/255b4654281541b39ab270550d99c1a3.png)
🍃 多条件判断实例:成绩及格否
对输入成绩做判断:
如果成绩小于60;那么
打印不及格
如果60>=成绩=成绩=成绩/dev/null
if [ $? -ne 0 ];then
echo "${results}不是合法整数"
exit 1
fi
if [ ${results} -lt 60 ];then
echo "不及格"
elif [ ${results} -ge 60 ] && [ ${results} -lt 80 ];then
echo "及格"
elif [ ${results} -ge 80 ] && [ ${results} -lt 90 ];then
echo "良好"
elif [ ${results} -ge 90 ] && [ ${results} -le 100 ];then
echo "优秀"
else
echo "请输入0-100之间合法的整数,您输入的是:${results}"
fi
![在这里插入图片描述](https://img-blog.csdnimg.cn/08ed2030346e48959bb74741edf31076.png)
🍃 单行if判断实例:判断是否有这个文件或目录
if [ ! -d "/var/lib/mysql/" ]; then echo "目录不存在"; else echo "目录存在"; fi
🍃 单行if判断实例:判断这个目录中是否存在文件(前提是有这个目录)
if [ -z "$(ls -A /var/lib/mysql)" ]; then echo "该目录不存在文件"; else echo "该目录存在文件"; fi
🍁 for 循环
🍁 for 循环格式:
for 变量 in 取值列表;do
执行代码
done
for 变量 in 取值列表
do
执行代码
done
for (( i=1;i能被2整除,除2余数为0
#!/bin/bash
#{起始数字..终止数字..步长} 默认步长为1
for i in {2..10..2};do
echo $i
done
continue 跳过当前循环 break 终止当前循环 exit 退出脚本,同时可以指定退出时的状态码
seq [起始位置(不指定默认是1)] 终止位置 -s 指定分隔符 -w 补齐相同宽度
🍃 需求2:循环创建文件cs{1…100}
#!/bin/bash
#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )
text=$DIR/for
[ ! -d $text ] && mkdir $text
for I in {1..100};do
touch ${text}/cs$I
done
#其实直接用touch也可以创建,这里只为了演示
#touch cs{1..100}
#会在当前目录创建cs{1..100}文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/831e69572db34317a8f7395c96662f70.png)
🍃 需求3:从变量中取遍历的值
#!/bin/bash
List="file1 file2 file3"
for I in $List;do
echo "当前文件为 ${I}"
done
![在这里插入图片描述](https://img-blog.csdnimg.cn/b136c2c1e20f403c8ad6b2ce0ef0a14f.png)
🍃 需求4:从命令中取值
#!/bin/bash
for I in $(cat /etc/passwd)
do
echo "$I"
done
![在这里插入图片描述](https://img-blog.csdnimg.cn/a0e5ef4111f3423197920f1e47447df2.png)
🍃 需求5:for循环自增自减
🍃 需求5.1:批量创建cs1-cs10用户
#!/bin/bash
for (( i=1;i10; a每次加1,直至加到10;b每次-1,直至a停止。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e4121b5d86234f6fa932695a54773db5.png)
🍃 需求5.3:循环20次zabbix调用
#!/bin/bash
for (( i=1;i/dev/null
for i in $(cat $DIR/a.txt);do
useradd -g mailgroup -s /sbin/nologin $i 2>/dev/null
echo 123456 | passwd --stdin $i
done
a.txt 中名字可以随便起;
![在这里插入图片描述](https://img-blog.csdnimg.cn/6b26731ff04d4f3f83aa73498f31ba50.png)
🍁 while 循环
🍁 while 循环格式:
while [条件测试];do
执行代码
done
while [条件测试]
do
执行代码
done
while true;do
执行代码(无限循环此命令,每次循环停留两秒)
sleep 2
done
条件测试比如:$i -le 5 当条件成立时,执行循环,不成立,结束循环。 如果while中的条件永远成立,会一直循环,成为死循环。
🍁 while 循环实例:
🍃 需求1:计算1到100正整数的和
#!/bin/bash
declare -i I=1
declare -i SUM=0
while [ $I -le 100 ]; do
let SUM+=$I
let I++
done
echo "$SUM"
在执行脚本时加个 -x 可查看执行过程
![在这里插入图片描述](https://img-blog.csdnimg.cn/5653022de41f49b08f995cc487701032.png)
🍃 需求2:批量创建用户,密码默认为123456
#!/bin/bash
#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )
#创建一个用户组
groupadd mailgroup 2>/dev/null
while read username; do
useradd -g mailgroup -s /sbin/nologin $username 2>/dev/null
echo 123456 | passwd --stdin $username
done /dev/null
cat $DIR/username.txt | while read username; do
userdel -r $username
done
![在这里插入图片描述](https://img-blog.csdnimg.cn/acd481b5e1004b7d86aed7e36b0fc3c7.png)
🍃 需求3:提示用户输入字符,如果是小写就把字母全部变为大写,如果是quit则退出脚本
#!/bin/bash
#如果输入的不是quit则把小写字母全部换成大写字母,如果输入的是quit则退出循环,否则会一直循环;
read -p "Please enter content:" SCRIPT
while [ $SCRIPT != "quit" ]; do
echo "$SCRIPT" | tr 'a-z' 'A-Z'
read -p "Please enter content:" SCRIPT
done
字母写的小写,全部会替换为大写,数字和其他字符不会被替换;
![在这里插入图片描述](https://img-blog.csdnimg.cn/f30e50c4d09f4d16b5b5564df894cbe9.png)
🍃 需求4:无限循环执行zabbix_get调用命令
#!/bin/bash
while true;do
cs=$(zabbix_get -s 172.16.10.1 -k cs)
echo "结果为$cs"
echo "----------------------------------------"
sleep 2
done
🍁 case 循环判断
🍁 case 循环判断格式:
case 变量 in
条件或值1)
执行代码
;;
条件或值2)
执行代码
;;
条件或值3)
执行代码
;;
*)
执行代码
esac
🍁 case 循环判断实例:
🍃 nginx服务启停脚本:函数 + case
#!/bin/bash
ngstart (){
/usr/local/nginx/sbin/nginx
}
ngstop (){
/usr/local/nginx/sbin/nginx -s stop
}
ngrestart (){
/usr/local/nginx/sbin/nginx -s reload
}
ngstatus (){
/usr/local/nginx/sbin/nginx -s status
}
#nginx服务器起停的脚本
case $1 in
start)
echo "启动nginx服务"
ngstart
;;
stop)
echo "关闭nginx服务"
ngstop
;;
restart)
echo "重启nginx服务"
# $0 stop
# $0 start
ngrestart
;;
status)
echo "查看nginx服务状态"
ngstatus
;;
*)
echo "USage: /etc/init.d/nginx {start|stop|restart}"
esac
![在这里插入图片描述](https://img-blog.csdnimg.cn/9573137493ad4504a3f463e81691b3fb.png)
推荐一个使用case写的启动脚本,包含启动,停止及重启监测状态:linux启动、关闭、重启jar包shell脚本
相关文章:
文章名文章地址【Linux】 shell脚本的创建及使用 《入门到实践》详解[⭐建议收藏!!⭐]https://liucy.blog.csdn.net/article/details/130111812【Linux】Shell脚本之函数的操作+实战详解[⭐建议收藏!!⭐]https://liucy.blog.csdn.net/article/details/130387377【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]https://liucy.blog.csdn.net/article/details/130387523
|