一、背景

虽然自己是一名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循环相关推荐

  1. 【C++自我精讲】基础系列三 重载

    [C++自我精讲]基础系列三 重载 0 前言 分二部分:函数重载,操作符重载. 1 函数重载 函数重载:指在同一名字空间中,函数名称相同,参数类型.顺序或数量不同的一类函数,同一函数名的函数能完成不同 ...

  2. Javascript学习总结 - JS基础系列三

    简述 本系列将持续更新Javascript基础部分的知识,谁都想掌握高端大气的技术,但是我觉得没有一个扎实的基础,我认为一切高阶技术对我来讲都是过眼云烟,要成为一名及格的前端工程师,必须把基础打扎实了 ...

  3. 【C语言基础系列】C语言循环结构

    写在前面:学习的第一门语言是Java,之前对C也了解一点,也只是了解一点,在加上长时间没有接触了,基本就只会一个Hello World了.现在由于准备升本考试,不得不从头开始学C.这里从零开始,记录C ...

  4. java二重循环换行_Java零基础系列教程05Java二重循环

    配套视频教程 循环回顾某次程序大赛,S1班有4名学员参加,学员的成绩由用户输入,计算该班参赛学员的平均分 二重循环若有3个班级各4名学员参赛,如何计算每个班级参赛学员的平均分? 使用二重循环实现--一 ...

  5. Java基础系列三之继承

    继承 一.什么是继承 继承是一个类继承另一个类,这个类拥有被继承的类中所有的成员方法(除了父类的构造方法)和属性: 继承是面向对象特征之一: 实现继承的类称为子类或者派生类,被继承的类称为父类,或者称 ...

  6. Shell脚本基础 、 使用变量 、 条件测试及选择 、 列表式循环案例

    Shell脚本基础 . 使用变量 . 条件测试及选择 . 列表式循环案例 1 案例1:Shell脚本的编写及测试 1.1 问题 1.2 方案 1.3 步骤 2 案例2:重定向输出的应用 2.1 问题 ...

  7. Android面试基础之ContentProvider详解(斗帝养成系列三)

    斗帝养成 斗师,一至九星,斗气纱衣,聚气化液态. 我匆忙了一生,我却留不下任何东西. Android面试基础之Activity详解(斗帝养成系列一) Android面试基础之Service详解(斗帝养 ...

  8. mplus 软件_Mplus基础系列教程(三)

    编者按 公众号本着公益分享,为大家带来了不少学习资源.前一段时间,由于编者精力和能力有限,于是本公众号招聘有志向的志愿者进行一定的创作,很感谢这些报名的勇士,给你们鼓掌,同时,我们也欢迎更多的人加入我 ...

  9. Java面试题基础系列

    Java面试题基础系列 1.面向对象的特征有哪些方面? 面向对象的特征主要有以下几个方面:抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和 ...

最新文章

  1. 10.Stream流
  2. windows不能在启动oracle,Windows不能在当地电脑启动OracleDBConsoleorcl
  3. 微型计算机与维修自测,微机系统及维护第三章自测.doc
  4. unity3d游戏开发第2版 pdf_学开发2个月,1个人做出个TapTap排行榜第4的游戏?
  5. mysql服务器性能剖析,高性能MySQL–服务器性能剖析
  6. 面试官:为什么 wait() 方法需要写在循环里?
  7. linux 创建组,创建用户
  8. 如何搭建一个内部组件共享平台
  9. 【剑指offer】面试题24:反转链表(Java)
  10. python语言程序设计编程题_Python语言程序设计(测试练习题)
  11. bzoj1038 [ZJOI2008]瞭望塔 枚举
  12. Python基本操作(五) 标准数据类型(不可变类型)
  13. Apache-配置、测试和调试
  14. 【CUDA学习】计时方法
  15. 天翼校园客户端拨号服务器无响应,天翼校园客户端问题总结及解决办法
  16. WPF 最简方法使用自己定制的 WPF 框架
  17. EMNLP2020 | 模型压缩系列:BERT-of-Theseus(一种基于模块替换的模型压缩方法)
  18. 解决由于破解软件导致的page fault in nonpaged area蓝屏
  19. Ubuntu20.04使用清华源下载Qt
  20. VMware安装中标麒麟Linux_server_x86_ZX64(兆芯版)

热门文章

  1. cf 923B Producing Snow
  2. 通过防火墙策略解决k8s中ng端口漏洞
  3. 计算机支持教学管理任务各种应用,CMI是什么东西?
  4. Keil 工程管理中移动分组(group)的位置
  5. 在视频背景前加字html,如何在一个视频前加封面(片头) 以及配音乐, 视频如何同时加片头和背景音乐...
  6. 思维导图 基础篇(12)应用-文章分析-记忆法
  7. 无法向缓存服务器存入信息,关于服务器缓存知识科普?
  8. robot_localization多传感器定位-IMU数据的校准与融合
  9. APP - 一个设置,让微信聊天背景清晰10倍
  10. Java程序员的JavaScript学习笔记(13—— jQuery UI)