循环主要分为3种

1.for循环

for循环的基本语法结构是三步走

for                                                  ##条件do                                            ##要做什么
done                                                 ##结束

借几个脚本来理解一下

1)10秒倒计时脚本

#!/bin/bash
for ((a=10;a>0;a--))
doecho -n " TIME $a"echo -ne "\r \r"sleep 1
done

2)如果想要自己输入的时间为倒计时呢

#!/bin/bash
read -p "please input the time you want count,eg 01 10   " i j
a=$i*60+$j
for ((b=$a;b>0;b--))
doecho -n " TIME $[b/60]:$[b%60] "echo -ne "\r"sleep 1
done

3)九九乘法表

#!/bin/bash##打印9*9乘法表
#1*1=1
#2*1=2 2*2=4
#3*1=3 3*2=6 3*3=9for i in $(seq 9)
dofor j in $(seq $i)doecho -ne "$i*$j=$(($i*$j))\t"doneecho -e "\n"
done

4)嵌套循环

#!/bin/bashfor((a=1;a<=3;a++))
doecho "Starting outside loop: $a"for((b=1;b<=3;b++))doecho "Inside loop: $b"done
done

2.if-else

if-else循环基本语法结构为

if            ;then                             ##条件1
elif          ;then                             ##条件2
........                                         ##可以有多个elif
else                                             ##最后的条件
fi                                               ##结束   

当然其中最简单的结构就是只有一个if和结尾的fi,再稍微复杂一点就是if-else-fi结构,比较复杂的就是上面代码段中的。

1)如果用话存在输出,hello+用户名

#!/bin/bash
user=kiosk
if grep $user /etc/passwd;then            echo "Hello $user"
fi

2)检测student用户是否存在,存在显示家目录的内容

#!/bin/bash
user=student
if grep $user /etc/passwd;thenecho "The files for user $user are:"ls -a /home/$user
elseecho "$user not exist!"
fi

3)查看是否被允许登陆

#!/bin/bashif [ "$1" == "student" ];thenecho "Welcome $1"
elif [ "$1" == "westos" ];thenecho "Welcome $1"
elif [ "$1" == "kiosk" ];thenecho "Welcome $1"
elif [ "$1" == "linux" ];thenecho "Welcome $1"
elseecho "You are not allowed!"
fi

3.while

while的基本语法结构为

while                                        ##条件do                                   ##做什么
done                                         ##结束 

1)新建westos{1..20}用户,并统一设置密码

#!/bin/bash
PREFIX="westos"
i=1
while [ $i -le 20 ]
douseradd -r  ${PREFIX}$i &> /dev/nullecho "123456" | passwd --stdin ${PREFIX}$i &> /dev/null       ##标准输入的方式更改密码((i++))
done

2)隔2秒输出依次系统启动时间

#!/bin/bash
while true
douptimesleep 2
done

4.case

case的结构如下面代码段中的程序

1)如果是允许用户输出允许,不是的话,输出sorry

#!/bin/bash
case $1 in
student|kiosk|linux|westos)echo "Welcome,$1";;
*)echo "sorry!";;
esac

5.练习题

运用本节所学内容,写一个交互式程序

#!/bin/bash
while true                                    ##死循环
doecho -e "\033[31m A 显示主机IP \033[0m\033[32m B 显示磁盘剩余空间 \033[0m\033[33m C 显示系统运行时间 \033[0m\033[34m Q 退出系统 \033[0m
"
read -p "请输入你的选择:" charcase $char ina|A)ifconfig br0 | grep "inet " | awk '{print $2}';;b|B)df -h | awk 'NR==2{print "剩余空间大小为:"$4}';;c|C)uptime |awk '{print $3}' | awk -F, '{print $1}' | awk -F: '{print "系统已经运行了"$1"小时"$2"分钟"}';;q|Q)exit 0;;esac
done

OK~

linux中shell的循环相关推荐

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

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

  2. Linux中shell语法和脚本编写

    Linux中shell语法和脚本编写 原文地址:学习shell的语法,及脚本编写 其它相关辅助资料: 编写shell脚本所需的语法和示例 基础linux指令&简单的shell语法和脚本编写 什 ...

  3. linux中shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $ ...

  4. linux中shell如何实现毫秒级别的sleep

    方法2.usleep 10000 (usleep为十的负六次方秒,详细见man usleep) 本文转自博客园知识天地的博客,原文链接:linux中shell如何实现毫秒级别的sleep,如需转载请自 ...

  5. Linux中shell的分类以及查看当前的shell

    DOS/Windows 与 Linux 的最重要的区别之一是 Linux 的命令 shell 是与操作系统相分离的一层. 目前流行的shell有ash.bash.ksh.csh.zsh,如下介绍: b ...

  6. linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...

  7. linux变量中代,linux中shell变量$#,$@,$0,$1,$2和变量${0%/*}

    一直傻傻搞不清,还是梳理一下吧. linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Pr ...

  8. linux+管道+分段,Linux中shell基础、重定向、管道符、环境变量

    原标题:Linux中shell基础.重定向.管道符.环境变量 1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核 ...

  9. linux下变量名长度,Linux中shell的变量介绍

    Linux中shell的变量介绍 发布时间:2020-06-24 16:20:39 来源:亿速云 阅读:112 作者:元一 这期内容当中的小编将会给大家带来有关Linux中shell的变量介绍,以专业 ...

最新文章

  1. 【linux】Valgrind工具集详解(二):入门
  2. asp.net 学习笔记 代码块标记
  3. linux线程-sysconf系统变量
  4. 【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
  5. Flink笔记--深度全面总结
  6. 【报告分享】阿里巴巴全生态就业体系与就业质量研究报告.pdf(附下载链接)...
  7. Javascript 权威指南第五版 手记(1) 引用类型
  8. cfile read 最大读取限制_Read文件一个字节实际会发生多大的磁盘IO?
  9. 标准Io编程学习笔记
  10. itext java代码生成PDF文档
  11. 双目测量空间中两点距离
  12. 【喜报】利用COOC又发表了多篇一区SCI、SSCI、CSSCI
  13. 经济类图书推荐--转自水木
  14. bundle adjustment算法学习
  15. Keepalived配置报错Unicast peers are not supported in strict mode
  16. 使用ensembl的API下载数据
  17. PaddleNLP系列课程一:Taskflow、小样本学习、FasterTransformer
  18. 电路中的VDD,DVDD,AVDD,VCC,AFVDD,DOVDD,IOVDD的区别
  19. oracle查询当前时间前10分钟到当前时间的数据
  20. 【苹果电脑数据恢复】mac超强数据恢复软件免费下载

热门文章

  1. 计算机网络与多媒体试卷,《计算机网络与多媒体技术》试卷
  2. matlab 28m35,使用F28M35添加自己写的头文件时,出现了“XXX”has already been declared in the current scope的问题...
  3. 可由低通滤波器推导变换为高通、带通、带阻滤波器
  4. 腾讯php开发工程师面试题
  5. 使用Wiredtiger恢复MongoDB中collection-x-xxx.wt文件数据
  6. 机器学习---回归模型和分类模型的评价指标体系
  7. 计算机与网络五十四所有版面费吗,网络与信息化中心财务管理办法(暂行)
  8. POJ 3691 AcWing 1053 修复DNA
  9. vu3响应式原理 代码分析
  10. QQ宠物明信片收到啦