【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]

这篇具有很好参考价值的文章主要介绍了【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

👨‍🎓博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


🍁 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

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 多条件判断实例:成绩及格否

对输入成绩做判断:
如果成绩小于60;那么
	打印不及格
如果60>=成绩<80;那么
	打印及格
如果80>=成绩<90;那么
	打印良好
如果90>=成绩<=100;那么
	打印优秀
否则
	请输入0-100的整数
结尾
#!/bin/bash

read -p "please input is results:" results
expr 10 + $results &>/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

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 单行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<20;i++ ));do
	执行代码;(表示循环20次执行代码)
done

取值列表中的值都将被历遍

🍁 for 循环实例:

🍃 需求1:打印10以内的偶数–>能被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}文件

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 需求3:从变量中取遍历的值

#!/bin/bash

List="file1 file2 file3"
for I in $List;do
        echo "当前文件为 ${I}"
done

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 需求4:从命令中取值

#!/bin/bash

for I in $(cat /etc/passwd)
do
        echo "$I"
done

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 需求5:for循环自增自减

🍃 需求5.1:批量创建cs1-cs10用户
#!/bin/bash

for (( i=1;i<=10;i++ ));do
        useradd cs_$i
done

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

如果需要删除这些用户,可在脚本中把useradd改为userdel -r即可;

🍃 需求5.2:输出数字 a 自增、 a自增、 a自增、b自减
#!/bin/bash

for (( a=1,b=9;a<=10;a++,b-- ));do
        echo "num is $a $b"
done

a的初始值为1;b的初始值为9;
a在前,所以写a最大不能>10;
a每次加1,直至加到10;b每次-1,直至a停止。

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 需求5.3:循环20次zabbix调用
#!/bin/bash

for (( i=1;i<=20;i++ ));do
	cs=$(zabbix_get -s 172.16.10.1 -k cs)
	echo "调用$i次!调用结果为:$cs"
	echo "------------------------------------------------------------------------"
done

🍃 需求6:批量创建用户,密码默认为123456

#!/bin/bash

#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )

#创建一个用户组
groupadd mailgroup 2>/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 中名字可以随便起;

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍁 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 可查看执行过程

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 需求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 < $DIR/username.txt

username.txt

lcy
cs
abc
abb
abd
abe
abf

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句
【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

批量删除用户

#!/bin/bash

#获取脚本执行的路径
DIR=$(cd $(dirname $0) && pwd )

#创建一个用户组
groupadd mailgroup 2>/dev/null


cat $DIR/username.txt | while read username; do
	userdel -r $username
done

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 需求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

字母写的小写,全部会替换为大写,数字和其他字符不会被替换;

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

🍃 需求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

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐],《Linux从入门到精通》,linux,运维,服务器,shell,流程控制语句

推荐一个使用case写的启动脚本,包含启动,停止及重启监测状态:linux启动、关闭、重启jar包shell脚本 文章来源地址https://www.toymoban.com/news/detail-649609.html

相关文章:

文章名 文章地址
【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

到了这里,关于【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3.7 Linux shell脚本编程(分支语句、循环语句)

    目录 分支语句(对标C语言中的if) 多路分支语句(对标C语言中的swich case) 分支语句(对标C语言中的if) 语法结构:          if    表达式                  then  命令表          fi     如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。

    2024年02月02日
    浏览(36)
  • 【玩转Linux操作】一文带你明白Shell的判断,循环语句

    🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 注意写空格 if … then 形式 类似于C/C++里面的 if-else 语句 🎈示例 🎈示例 🎈示例 类似于C/C++的 switch 语句 🎈示例 注意写空

    2024年02月13日
    浏览(32)
  • Linux shell编程学习笔记17:for循环语句

    Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、字符串、文件测试等多种运算,同样也需要进行根据条件进行流程控制,提供了if、for、while、until等语句。  之前我们探讨了if语句,现在我们来探讨for循环语句。 Linux Shell中的for语句十分灵活,格式多样,我

    2024年02月06日
    浏览(33)
  • Linux系统Shell脚本第三章:for、while循环及脚本实操

    目录 一、for循环 1、基本格式 2、类C语言格式 二、while循环 1、基本格式 2、死循环语句 三、跳出循环 1、continue跳出循环 2、break跳出循环 四、常用循环脚本实例 1、循环打印9*9乘法表 2、循环ping测试某个网段网络连通性 3、while死循环实现猜数字游戏 用于已知循环次数的场景

    2024年01月16日
    浏览(33)
  • Shell脚本之——条件语句if详解

    测试表达式是否成立,若成立返回0,否则返回其他数值。 -d∶ 测试是否为目录(Directory) -e∶ 测试目录或文件是否存在(Exist) -f∶ 测试是否为文件(File) -r∶ 测试当前用户是否有权限读取(Read) -w∶ 测试当前用户是否有权限写入(Write) -x∶测试当前用户是否有权限执

    2024年01月21日
    浏览(52)
  • shell 脚本中 if 各种条件判断的使用

    1.1 if-elif-else语法格式 1.2 if-else语法格式 1.3 if语法格式 示例: 运行结果: 示例: 运行结果: 示例: 运行结果: 示例: 运行结果:

    2024年02月17日
    浏览(39)
  • shell脚本----条件判断语句

    文件测试 test命令 测试表达是是否成立,若成立则返回0,否则返回其他的数 用法一:test 条件表达式 用法二:[ 条件表达式 ] 选项 含义 -e 测试目录或者文件是否存在 -d 测试是否为目录 -f 测试是否为文件 -r 测试当前用户是否有读的权限 -w 测试当前用户是否有写的权限 -x 测

    2024年02月01日
    浏览(32)
  • shell脚本之循环语句

    将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件 一般知道循环次数使用for循环 不知道循环次数,知道停止条件时一般使用while break跳出单个循环后面加数字2则代表跳出两层循环 continue终止某次循环中的命令,但是不会完全终止命令

    2024年02月12日
    浏览(31)
  • Shell脚本while循环语句应用

    记录 :433 场景 :Shell脚本while循环语句应用。Shell脚本while循环语句应用。while do done、while : do done、while true do done。 版本 :CentOS Linux release 7.9.2009。 1.while常用格式 1.1格式一:while do done 1.2格式二:无限循环(while : do done) 1.3格式三:无限循环(while true do done) 2.使用while遍历数组

    2024年02月06日
    浏览(60)
  • 九、程序的流程结构(if分支语句,Switch分支,for循环)

    程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。 顺序结构:从上向下,逐行执行。 选择结构:条件满足,某些代码才会执行。0-1次 ​ 分支语句:if,switch,select 循环结构:条件满足,某些代码会被反复的执行多次。0-N次 ​ 循环语句:for 语法格式: 示

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包