shell脚本——编程之循环语句(for、while、until)

  • 一、输出字符串或提取Shell变量的值——echo命令
  • 二、for循环语句
  • 三、while循环
    • while 猜数字小游戏
  • 四、until 循环语句结构
  • 【扩充】
    • break 和 cotinue 命令

一、输出字符串或提取Shell变量的值——echo命令

echo [参数] [字符串]
转义符 号 含义
-n 表示输出不换行
-E 禁止反斜杠转义,与-e参数功能相反
-e 输出转义字符,将转义后的内容输出到屏幕上
\b 相当于退格键,但前提是“\b”后存在字符;“\b"表示删除前一个字符;”\b\b"表示删除前两个字符
\c 不换行输出。后面无字符时相当于 echo -n;"\c"后有字符时,将不被输出
\n 换行,但是换行后的新行从“\n”处开始另起一行
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾
\v 与\f相同
\t 转义后表示插入tab,即横向制表符
\r 光标移至行首,但不换行,相当于使用“\r”以后的数字覆盖之前相等长度的字符
| 表示插入“\”本身

案例一:echo -n 不换行输出

#!/bin/bash
echo k
echo i
echo r
echo o
echo "......"
echo -n k
echo -n i
echo -n r
echo -n o

案例二:echo -e 转义字符;\b 退格 不换行输出

案例三:echo -e \c不换行输出

案例四: \n 换行输出

案例五:\f 、\v换行输出


案例六:\r光标移至行首不换行

案例七:删除字符的方法:

二、for循环语句

读取不同的变量值,用来逐个执行同一组命令

  • 用法:

读取不同的变量值,用来逐个执行同一组命令

for循环经常使用在已经知道要进行多少次循环的场景

  • 格式:
for  变量名  in  取值列表
do命令序列
done


案例一:循环出0到10之间的整数


法一:
#!/bin/bash
for i in {1..10}doecho $idone法二:
#!/bin/bash
for i in $(seq 1 10)
doecho $i
done


案例二:查看当前目录下所有内容

[root@Kiro shell]# for k in *;do echo $k;done
for.sh
sum.sh
teacher.sh
test.sh
test.txt
user.sh
vars.sh

案例二:查看当前目录下所有内容

案例三:求20以内偶数和

#!/bin/bash
sum=0
for i in {2..20..2}
dosum=$[sum+i]let i++
done
echo "20以内的偶数和为:$sum


案例四:批量创建用户并修改密码

#!/bin/bash
for user in {1..3}doecho user${user}|xargs -n1 useraddecho "123456"|passwd --stdin user${user}done


案例五:根据ip地址列表检查主机状态

#!/bin/bashIPLIST=$(cat /root/shell/ip.txt)
for IP in $IPLIST
do
ping -c 3 -i 0.5 $IP &> /dev/nullif [ $? -eq 0 ];thenecho "host $IP is up."elseecho "host $IP is down."fi
done

案例六:三次机会验证密码

#!/bin/bash
init=123456
for i in {1..3}
do
read -p "请输入密码:" passif [ $pass == $init ];thenecho "密码正确"exitfi
done


抽奖小游戏

#!/bin/bash
a=0
b=0
c=0
d=0
for ((i=1;i<=10;i++))donum=$(expr $[RANDOM%4+2])LIST=$(cat /root/shell/users.txt |grep "$num" | awk -F: '{print $2}' )case $LIST inhuahua)let a++;;duoduo)let b++;;sansan)let c++;;*)let d++esacecho "$LIST"
doneecho "huahua: $a 次,duoduo: $b 次,sansan $c 次,其他: $d 次"



画星星

#!/bin/bash
read -p "请输入你想要的星星规则:" start
for ((i=1;i<=start;i++))
dofor  ((j=1;j<=$start;j++))doecho -n "*"done
echo
done


九九乘法表

#!/bin/bash
for i in {9..1..-1}
do
for j in `seq $i`
doecho -e -n "${i}x${j}=$[ $i * $j ]\t"
done
echo
done

三、while循环

只要条件成立,则反复循环,不成立即停止

while 条件测试操作
do命令序列
done


案例1:利用while循环打印一个5x5的*

#!/bin/bash
i=1
j=1while [ $i -le 5 ]
dowhile [ $j -le 5 ] doecho -n "* " let j++doneecho let i++let j=1
done


案例二:批量添加规律编号用户

#!/bin/bashNAME="user"
i=1
while [ $i -le 20 ]
douseradd ${NAME}$iecho "123456" |passwd --stdin ${NAME}$i &>/dev/nulllet i++
done


附赠一个批量删除:

#!/bin/bash
cd /home
i=1
NAME="user"while [ $i -le 20 ]
douserdel -r ${NAME}$ilet i++
done

while 猜数字小游戏

#!/bin/bashpc_num=$[RANDOM%3+1]
count=0
while true
doread -p "请输入一个数字:" user_numif [ $user_num -eq $pc_num ]thenecho "答对啦"breakelif [ $user_num -gt $pc_num ]thenecho "你的数字太大了"elseecho "你的数字太小了"filet count++
doneecho 你输入的次数为:$count

四、until 循环语句结构

重复测试某个条件,只要条件不成立则反复循环

while 条件测试操作
do命令序列
done


案例:求50到100的和

#!/bin/bash
sum=0
i=50
until [ $i gt 100]dosum=$[sum+i]let i++
done
echo "{50..100}的和:$sum"

【扩充】

break 和 cotinue 命令


shell脚本——循环语句相关推荐

  1. shell 脚本循环语句

    shell脚本循环语句 一.循环语句 1.1 for循环语句 1.2 for循环语法 1.3 for循环案例 1.4 类C风格循环 二.while语法 2.1 语法结构 2.2 while语法使用的一 ...

  2. linux中脚本循环语句,Shell脚本循环语句

    Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂.强大的功能.我们今天就来认识if.for.while.case语句的具体应用. 一.使用if语句结构 ...

  3. Shell脚本循环语句及exit、continue和break用法

    目录 一.for循环语句 二.while循环语句结构 三.until 循环语句结构 四.exit.continue和break 一.for循环语句 用法: 读取不同的变量值,用来逐个执行同一组命令 f ...

  4. Linux之shell脚本循环语句for while until

    一.for循环语句 for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同.例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检 ...

  5. Linux _ Shell编程 — 循环语句

    Linux _ Shell编程 - 循环语句 一.循环语句for的用法 二.循环语句while的用法 三.循环控制语句 一.循环语句for的用法 for 变量名 in 单词表do命令表done 变量依 ...

  6. 怎么编写Linux脚本循环语句,shell脚本及常用循环语句

    博文结构 什么是shell 简单编辑shell 循环语句 一.什么是shell及作用 Shell字面理解就是个"壳",是操作系统(内核)与用户之间的桥梁,充当命令解释器的作用,将用 ...

  7. Linux从入门到精通系列之SHELL编程循环语句语法及实例详解(forwhileuntil)

    前言 Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂.强大的功能.我们今天就来认识for.while.case语句的具体应用. 插个小广告吧,虽然我 ...

  8. linux中循环控制语句,3.2.3 Shell脚本--循环控制语句

    一. 循环控制语句 1. for循环语句 2. while循环语句 3. until 循环语句 条件为假,执行循环 二. 练习题 1. for 语句 ① 分行打印各参数. [提示]:体会$@.$*.& ...

  9. Shell版本循环语句(if//for/while/case)

    if选择结构 if单分支处理:当"条件成立"时执行命令序列xx,否则,不执行任何操作(只判断为真) if [条件测试] ; then 命令序列xx fi 示例:检测/media/c ...

最新文章

  1. 从原理到代码,轻松深入逻辑回归模型!
  2. ZYNQ_AXI4_Lite总线详解
  3. Mybatis 配置文件
  4. 【C++】50.编程中切换状态的【有限状态机】
  5. 自定义动画属性java_创建酷炫动画效果的10个JavaScript库
  6. C# - JSON详解
  7. 一天完成一点,进度太慢了啊
  8. 力扣有没有java_【Java】一篇文章带你玩转用Java刷力扣
  9. Android 4.0 ICS SystemUI浅析——StatusBar加载流程分析
  10. python开发安卓盒子_Python盒子:模块、包和程序
  11. MATLAB compatloose,麻烦帮忙看下这个视频
  12. noip2018提高组广东省成绩
  13. ionic2入门教程(三)高仿网易公开课(1)
  14. CAT埋点实战-服务器搭建-代码实现
  15. 入门系列-集成 Autofac
  16. Kubernetes(K8s) —— 容器编排管理技术
  17. 时间序列分析 | Python实现时间序列统计分析与建模
  18. 《第一行代码 Android 第2版》下载
  19. COOX平台(SCADA MES)
  20. 配置文档:3COM 4200 3C17300A配置文件,可与WAYOS、ROS、海蜘蛛多WAN对接

热门文章

  1. java计算机毕业设计HTML5企业员工管理系统MyBatis+系统+LW文档+源码+调试部署
  2. [354]python os.path模块
  3. Android开发:实现简单的问卷调查
  4. ubuntu修改网易云音乐分辨率显示
  5. android QQ动态tab,变化忒大了!Android版手机QQ 5.0体验
  6. linux我的电脑图标,Linux下给wps增加桌面图标(网摘)
  7. 安卓知识体系搭建(持续更新)
  8. 宽带服务器的作用是什么,服务器的作用是什么
  9. 共享打印机出现文件无法打印|0X00000709错误的解决方案|win7 win11
  10. 【图像加密】DFT变换算法