当前位置: 首页 > news >正文

【Linux shell】条件判断和流程控制

🔥个人主页 🔥

😈所属专栏😈 

目录

shell中的算术运算

条件判断

两个整数之间的比较,字符串之间的比较

文件权限的判断

文件类型判断

流程控制

if语句

for循环

while循环

switch语句


shell中的算术运算

语法$(())

#!/bin/bash
read a
read b
num1=$((a + b))
echo "和为$num1"num2=$((a * b))
echo "积为$num2"

条件判断

两个整数之间的比较,字符串之间的比较

  • -lt :小于(less than)
  •  -le:小于等于(less equal)
  • -eq:等于(equal)
  • -gt:大于(greater than) 
  • -ge:大于等于(greater than) 
  • -ne 不等于(no equal)
#!/bin/bash
read num
if [ $num -lt 25 ];thenecho "$num is smaller than 25"
elif [ $num -eq 25 ];thenecho "$num is equal 25"
elif [ $num -gt 25 ];thenecho "$num is bigger than 25"
fi

文件权限的判断

  • -r:读的权限
  • -w 写的权限
  • -x 执行的权限
#!/bin/bash
echo $1
if [ -r $1 ];thenecho "the file has the access of read"
fi
if [ -w $1 ];thenecho "the file has the access of write"
fi
if [ -x $1 ];thenecho "the file has the access of execute"
fi

文件类型判断

  • -f 文件存在并且是一个常规的文件
  • -e 文件存在
  • -d 文件存在并且是一个目录
#!/bin/bash
echo $1
if [ -f $1 ];thenecho "文件存在并且是一个常规的文件"
fi
if [ -e $1 ];thenecho "文件存在"
fi
if [ -d $1 ];thenecho "文件存在并且是一个目录"
fi

流程控制

if语句

语法:

if [ 条件 ];then#要执行的代码
elif [ 条件 ];then#要执行的代码
else #要执行的代码
fi

注意[]中的条件前后都要有空格

for循环

c风格for循环

#!/bin/bash
for ((i=1;i<5;i++));doecho "current number is $i"
done

遍历命令行参数

for i in "$@";doecho "arg is $i"
done

遍历数组

p=("zhangsan" "lisi" "wangwu")
for i in "${p[@]}";doecho "$i"
done

while循环

语法:

while[ 条件 ];do#循环体
done
echo "please input a number"
read num
aim=24
while true;doif [ $num -lt $aim ];thenecho "the number you guess is smaller"read numelif [ $num -gt $aim ];thenecho "the number you guess is bigger"read numelif [ $num -eq $aim ];thenecho "you are right"breakfi
done

switch语句

语法


case 值 in
1)echo "选择1";;
2)echo "选择2";;
3)echo "选择3";;
*)echo "无效选择";;
esac

示例

read choice
case $choice in
1)echo "选择功能1";;
2)echo "选择功能2";;
3)echo "选择功能3";;
*)echo "无效选择";;
esac

相关文章:

  • 第十四章 Linux实操篇——进程管理(重点)
  • 网络原理8 - HTTP协议1
  • AI Agent 核心策略解析:Function Calling 与 ReAct 的设计哲学与应用实践
  • python打卡day51
  • 计算机视觉与深度学习 | 两种经典的低照度增强算法:多尺度Retinex(MSR)和自适应直方图均衡化(CLAHE)
  • 我们来学mysql -- keepalive主从高可用
  • YOLOv1 技术详解:目标检测的实时革命
  • 为何AI推理正推动云计算从集中式向分布式转型
  • React Native UI 框架与动画系统:打造专业移动应用界面
  • 网络请求与本地存储:Axios 与 AsyncStorage 在 React Native 中的应用
  • 深入偏微分方程的世界-AI云计算
  • 开源 java android app 开发(十二)封库.aar
  • 基于React Native的HarmonyOS 5.0休闲娱乐类应用开发
  • Android的Dalvik和ART
  • 【DETR目标检测】ISTD-DETR:一种基于DETR与超分辨率技术的红外小目标检测深度学习算法
  • 修仙处于平凡
  • 华为服务器obsutil使用方法
  • 计算机网络:认证和授权 DNS 域名解析过程(如何转换为ip地址) http无状态 5**服务端错误相关的响应状态码 tcp某次握手丢失会有什么现象?
  • WPP 媒体推出基于人工智能的工具突破基于身份识别的定向模式
  • 摄影入门:相机基本参数解析
  • 网站开发需要用什么/推广赚钱项目
  • 地方门户网站运营/seo常用工具包括
  • 网站开发好学不/律师推广网站排名
  • 网站建设方案下载/最近的电脑培训班在哪里
  • 网站在线客服如何做/百度竞价排名查询网站
  • 建设企业网站官网u盾/郑州seo排名第一