第10章 Shell编程(4)_流程控制
2024-10-19 17:28:29
5. 流程控制
5.1 if语句
(1)格式:
格式1 |
格式2 |
多分支if |
if [ 条件判断式 ];then #程序 else #程序 fi |
if [ 条件判断式 ] then #程序 else #程序 fi |
if[ 条件判断1 ];then #程序 elif [ 条件判断2 ];then #程序 else #程序 fi |
(2)注意事项
①if语句使用fi结尾,和一般语言使用大括号结尾不同
②[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格。
③then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了
【编程实验】1.统计根分区大小
#!/bin/bash
#统计根分区使用率
#Author: SantaClaus #把根分区使用率作为变量rate的值
rate=$(df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f ) if [ $rate -ge ];then
echo "Warning! /dev/sda5 is full!"
else
echo "usage:$rate%"
fi
【编程实验】2.判断文件类型
#!/bin/bash
#判断用户输入的是什么文件
#Author: Santa Claus #接收键盘输入,并赋予变量file
read -p "Please input a file name:" file if [ -z "$file" ]; then #判断file变量是否为空
echo "Error, please input a filename"
exit
elif [ ! -e "$file" ];then #判断文件是否存在
echo "Your input is not a file!"
exit
elif [ -f "$file" ];then #文件是否为普通文件
echo "$file is a regular file!"
elif [ -d "$file" ];then #是否为目录
echo "$file is a directory"
else
echo "$file is an other file!"
fi
5.2 case语句
(1)case和if…elif…else的区别
两者都是多分支条件语句,但与if多分支语句不同的是,case语句只能判断一种关系,而if语句可以判断多种条件关系。
(2)case语句的格式
case $变量名 in
"值1")
#程序1
;;
"值2")
#程序2
;;
*)
#程序3
;;
esac
【编程实验】判断用户输入
#!/bin/bash
#判断用户输入
#Author:Santa Claus read -p "Please choose yes/no: " -t choice case $choice in
"yes")
echo "Your choose is yes!"
;;
"no")
echo "Your choose is no!"
;;
*)
echo "Your choose is error!"
esac
5.3 for循环
(1)语法
语法1 |
语法2 |
for 变量 in 值1 值2 值3… do #程序 done |
for(( 初始值;循环控制条件;变量变化)) do #程序 done |
(2)应用举例
【编程实验】批量添加用户
#!/bin/bash
#批量添加用户
#Author: Santa Claus read -p "Please input user name: " -t name
read -p "Please input the number of users: " -t num
read -p "Please input the password of users: " -t pass if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ];then
#判断输入num是否是数字
y=$(echo $num | sed 's/[0-9]//g') #将数字替换为空 if [ -z "$y" ];then
for((i=;i<=$num;i=i+))
do
#添加用户,不显示操作结果
/usr/sbin/useradd $name$i &>/dev/null
#添加密码,不显示操作结果
echo $pass | /usr/bin/passwd --stdin $name$i &>/dev/null
done
fi
fi
5.4 while循环和until循环
(1)while的语法
while [ 条件判断式 ]
do
#程序
done
注意:while循环是不定循环,也称作条件循环。只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。这就和for的固定循环不太一样。
(2)until循环的语法
until [ 条件判断式 ]
do
#程序
done
注意:until,和while循环相反,在until循环时只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环。
【编程实验】while和until循环
#!/bin/bash
#从1加到100
#Author: Santa Claus #方法1:通过while
i=
s= while [ $i -le ] #小于等于100
do
s=$(( $s + $i))
i=$(( $i + ))
done echo "The sum is: $s " #方法2:until
i=
s= until [ $i -gt ] #直至i大于100
do
s=$(( $s + $i))
i=$(( $i + ))
done echo "The sum is: $s "
最新文章
- Python小知识
- C# lambda
- 【原创】你知道OneNote的OCR功能吗?office lens为其增大威力,中文也识别
- markdown 的基本操作
- ZOJ1232 Adventure of Super Mario(DP+SPFA)
- hdu1301Jungle Roads
- 使用预处理PreparedStatement执行Sql语句
- android下拉选择框spinner
- POJ 3122 Pie 二分枚举
- flushall()函数的用法
- boost准模板库scoped_ptr指针的使用以及auto_ptr智能指针的对照
- ●杜教筛入门(BZOJ 3944 Sum)
- SQLAlchemy使用介绍
- Flutter采坑之路 Run Configuration error:broken configuration due to unavailable
- 深入浅出的webpack4构建工具---Scope Hoisting(十六)
- BZOJ4764弹飞大爷——LCT
- mybatis 插入空值时报错 TypeException
- C++学习一explicit
- java字符串拼接的几种方式
- Vue学习笔记之Vue的箭头函数
热门文章
- Matlab数值计算示例: 牛顿插值法、LU分解法、拉格朗日插值法、牛顿插值法
- .NET Core的日志[5]:利用TraceSource写日志
- Hawk 5.1 数据导入和导出
- 玩转spring boot——AOP与表单验证
- HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置
- ADO.NET编程之美----数据访问方式(面向连接与面向无连接)
- Node.js npm 详解
- Asp.NET + SQLServer 部署注意事项
- iOS系列教程 目录 (持续更新...)
- ASP.NET Core 在 JSON 文件中配置依赖注入