shel脚本基础系列(三)for-while循环
一、背景
虽然自己是一名java程序员,做后端的,但是最近工作中经常需要看别人写的脚本去运行项目,所以作为后端程序员,我们也需要了解一下shell语法,会读懂一些基本的shell脚本。
二、for循环
1、共三种写法,下面实现打印1到5作为例子
(1)、第一种写法,实现打印1到5。
#!/bin/bash
for i in 1 2 3 4 5
do echo $i
done
(2)、第二种写法,实现打印1到5。
for i in {1..5}
do
echo $i
done
(3)、第三种写法,实现打印1到5。
for((i=1;i<=5;i++))
do
echo $i
done
2、一些关键字
break |
跳出循环 |
exit | 退出脚本 |
continue | 继续,跳出本次循环 |
3、举例,判断是否是质数
(1)seq命令用于产生从某个数到另外一个数之间的所有整数
#命令行执行时输入一个数字
read -p "请输入一个数:" number#比较number是否为1,为1输出不是质数,退出程序
[ $number -eq 1 ] && echo "$number 不是质数" && exit#比较number是否为2,为2输出是质数,退出程序
[ $number -eq 2 ] && echo "$number 是质数" && exit#遍历从2到number-1后除以2的整数
for i in `seq 2 $[$[$number-1]/2]`
do#比较number除以后是否模为0,为0不是质数[ $[$number%$i] -eq 0 ]&& echo "$number 不是质数" && exitdone
echo "$number是质数" && exit
4、举例批量创建用户
(1)for循环创建5个用户。
#到etc/group文件里判断是否用class开头的组
grep -w ^class /etc/group &>/dev/null
#根据上一步的命令是否成功判断是否存在组,不存在添加组
test $? -ne 0 && groupadd class
#遍历创建u1到u5用户
for((i=1; i<=5;i++))
do
useradd -G class u$i
#给用户设置密码
echo 123|passwd --stdin u$i
done
三、while循环
1、常用两种写法,为true执行while循环
(1)、第一种写法 [ 判断表达式 ]
while [ 1 -eq 1]docommanddone
(2)、第二种写法,(( 判断表达式 ))
while (( 1< 2 ))docommanddone
2、举例,where打印1到5
i=1
while (($i<=5))
do echo "$i"i=$[$i+1]done
3、举例,脚本同步系统时间
(1)每30秒同步一次系统时间,使用的阿里云的时间同步服务器: ntp1.aliyun.com。
(2)同步成功,成功100次后向自己邮箱发成功通知。
(3)同步失败,向邮箱发送失败通知。
(4)需要注意if与条件判断之间有空格。
(5)没有mail命令,通过yum install sendmail安装。
#!/bin/bashNTP=ntp1.aliyun.com
count=0
while true
donptdate $NTP&>/dev/nullif [ $? -ne 0 ];thenecho "system date failed" |mail -s "check system time" 184385955@163.comelselet count++if [ $count -eq 100 ];thenecho "system date success" |mail -s "check system time" 184385955@163.com && count=0fi
fi
sleep 1
done
(6)执行后,收到邮件结果如下。
四、总结
以上就是就是关于shell语法for循环,while循环相关所有内容,希望对大家有帮助,可以参考一下,觉得不错的话,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。
shel脚本基础系列(三)for-while循环相关推荐
- 【C++自我精讲】基础系列三 重载
[C++自我精讲]基础系列三 重载 0 前言 分二部分:函数重载,操作符重载. 1 函数重载 函数重载:指在同一名字空间中,函数名称相同,参数类型.顺序或数量不同的一类函数,同一函数名的函数能完成不同 ...
- Javascript学习总结 - JS基础系列三
简述 本系列将持续更新Javascript基础部分的知识,谁都想掌握高端大气的技术,但是我觉得没有一个扎实的基础,我认为一切高阶技术对我来讲都是过眼云烟,要成为一名及格的前端工程师,必须把基础打扎实了 ...
- 【C语言基础系列】C语言循环结构
写在前面:学习的第一门语言是Java,之前对C也了解一点,也只是了解一点,在加上长时间没有接触了,基本就只会一个Hello World了.现在由于准备升本考试,不得不从头开始学C.这里从零开始,记录C ...
- java二重循环换行_Java零基础系列教程05Java二重循环
配套视频教程 循环回顾某次程序大赛,S1班有4名学员参加,学员的成绩由用户输入,计算该班参赛学员的平均分 二重循环若有3个班级各4名学员参赛,如何计算每个班级参赛学员的平均分? 使用二重循环实现--一 ...
- Java基础系列三之继承
继承 一.什么是继承 继承是一个类继承另一个类,这个类拥有被继承的类中所有的成员方法(除了父类的构造方法)和属性: 继承是面向对象特征之一: 实现继承的类称为子类或者派生类,被继承的类称为父类,或者称 ...
- Shell脚本基础 、 使用变量 、 条件测试及选择 、 列表式循环案例
Shell脚本基础 . 使用变量 . 条件测试及选择 . 列表式循环案例 1 案例1:Shell脚本的编写及测试 1.1 问题 1.2 方案 1.3 步骤 2 案例2:重定向输出的应用 2.1 问题 ...
- Android面试基础之ContentProvider详解(斗帝养成系列三)
斗帝养成 斗师,一至九星,斗气纱衣,聚气化液态. 我匆忙了一生,我却留不下任何东西. Android面试基础之Activity详解(斗帝养成系列一) Android面试基础之Service详解(斗帝养 ...
- mplus 软件_Mplus基础系列教程(三)
编者按 公众号本着公益分享,为大家带来了不少学习资源.前一段时间,由于编者精力和能力有限,于是本公众号招聘有志向的志愿者进行一定的创作,很感谢这些报名的勇士,给你们鼓掌,同时,我们也欢迎更多的人加入我 ...
- Java面试题基础系列
Java面试题基础系列 1.面向对象的特征有哪些方面? 面向对象的特征主要有以下几个方面:抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和 ...
最新文章
- 10.Stream流
- windows不能在启动oracle,Windows不能在当地电脑启动OracleDBConsoleorcl
- 微型计算机与维修自测,微机系统及维护第三章自测.doc
- unity3d游戏开发第2版 pdf_学开发2个月,1个人做出个TapTap排行榜第4的游戏?
- mysql服务器性能剖析,高性能MySQL–服务器性能剖析
- 面试官:为什么 wait() 方法需要写在循环里?
- linux 创建组,创建用户
- 如何搭建一个内部组件共享平台
- 【剑指offer】面试题24:反转链表(Java)
- python语言程序设计编程题_Python语言程序设计(测试练习题)
- bzoj1038 [ZJOI2008]瞭望塔 枚举
- Python基本操作(五) 标准数据类型(不可变类型)
- Apache-配置、测试和调试
- 【CUDA学习】计时方法
- 天翼校园客户端拨号服务器无响应,天翼校园客户端问题总结及解决办法
- WPF 最简方法使用自己定制的 WPF 框架
- EMNLP2020 | 模型压缩系列:BERT-of-Theseus(一种基于模块替换的模型压缩方法)
- 解决由于破解软件导致的page fault in nonpaged area蓝屏
- Ubuntu20.04使用清华源下载Qt
- VMware安装中标麒麟Linux_server_x86_ZX64(兆芯版)
热门文章
- cf 923B Producing Snow
- 通过防火墙策略解决k8s中ng端口漏洞
- 计算机支持教学管理任务各种应用,CMI是什么东西?
- Keil 工程管理中移动分组(group)的位置
- 在视频背景前加字html,如何在一个视频前加封面(片头) 以及配音乐, 视频如何同时加片头和背景音乐...
- 思维导图 基础篇(12)应用-文章分析-记忆法
- 无法向缓存服务器存入信息,关于服务器缓存知识科普?
- robot_localization多传感器定位-IMU数据的校准与融合
- APP - 一个设置,让微信聊天背景清晰10倍
- Java程序员的JavaScript学习笔记(13—— jQuery UI)