linux中shell的循环
循环主要分为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的循环相关推荐
- Linux _ Shell编程 — 循环语句
Linux _ Shell编程 - 循环语句 一.循环语句for的用法 二.循环语句while的用法 三.循环控制语句 一.循环语句for的用法 for 变量名 in 单词表do命令表done 变量依 ...
- Linux中shell语法和脚本编写
Linux中shell语法和脚本编写 原文地址:学习shell的语法,及脚本编写 其它相关辅助资料: 编写shell脚本所需的语法和示例 基础linux指令&简单的shell语法和脚本编写 什 ...
- linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $ ...
- linux中shell如何实现毫秒级别的sleep
方法2.usleep 10000 (usleep为十的负六次方秒,详细见man usleep) 本文转自博客园知识天地的博客,原文链接:linux中shell如何实现毫秒级别的sleep,如需转载请自 ...
- Linux中shell的分类以及查看当前的shell
DOS/Windows 与 Linux 的最重要的区别之一是 Linux 的命令 shell 是与操作系统相分离的一层. 目前流行的shell有ash.bash.ksh.csh.zsh,如下介绍: b ...
- linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释
摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...
- linux变量中代,linux中shell变量$#,$@,$0,$1,$2和变量${0%/*}
一直傻傻搞不清,还是梳理一下吧. linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Pr ...
- linux+管道+分段,Linux中shell基础、重定向、管道符、环境变量
原标题:Linux中shell基础.重定向.管道符.环境变量 1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核 ...
- linux下变量名长度,Linux中shell的变量介绍
Linux中shell的变量介绍 发布时间:2020-06-24 16:20:39 来源:亿速云 阅读:112 作者:元一 这期内容当中的小编将会给大家带来有关Linux中shell的变量介绍,以专业 ...
最新文章
- 【linux】Valgrind工具集详解(二):入门
- asp.net 学习笔记 代码块标记
- linux线程-sysconf系统变量
- 【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
- Flink笔记--深度全面总结
- 【报告分享】阿里巴巴全生态就业体系与就业质量研究报告.pdf(附下载链接)...
- Javascript 权威指南第五版 手记(1) 引用类型
- cfile read 最大读取限制_Read文件一个字节实际会发生多大的磁盘IO?
- 标准Io编程学习笔记
- itext java代码生成PDF文档
- 双目测量空间中两点距离
- 【喜报】利用COOC又发表了多篇一区SCI、SSCI、CSSCI
- 经济类图书推荐--转自水木
- bundle adjustment算法学习
- Keepalived配置报错Unicast peers are not supported in strict mode
- 使用ensembl的API下载数据
- PaddleNLP系列课程一:Taskflow、小样本学习、FasterTransformer
- 电路中的VDD,DVDD,AVDD,VCC,AFVDD,DOVDD,IOVDD的区别
- oracle查询当前时间前10分钟到当前时间的数据
- 【苹果电脑数据恢复】mac超强数据恢复软件免费下载
热门文章
- 计算机网络与多媒体试卷,《计算机网络与多媒体技术》试卷
- matlab 28m35,使用F28M35添加自己写的头文件时,出现了“XXX”has already been declared in the current scope的问题...
- 可由低通滤波器推导变换为高通、带通、带阻滤波器
- 腾讯php开发工程师面试题
- 使用Wiredtiger恢复MongoDB中collection-x-xxx.wt文件数据
- 机器学习---回归模型和分类模型的评价指标体系
- 计算机与网络五十四所有版面费吗,网络与信息化中心财务管理办法(暂行)
- POJ 3691 AcWing 1053 修复DNA
- vu3响应式原理 代码分析
- QQ宠物明信片收到啦