当前位置: 首页 > 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

http://www.xdnf.cn/news/977437.html

相关文章:

  • DL00124-基于YOLOv12深度学习的棉花叶片病害检测含完整数据集
  • BERT 模型微调与传统机器学习的对比
  • uniapp音乐播放createInnerAudioContext
  • 零基础实战:云开发家政维修小程序搭建指南
  • UniApp组件封装,2025年最新HarmonyOS鸿蒙模块化开发项目式教程
  • vue3 + element plus 实现表格列头、行的添加及拖动换位
  • vue前端面试题——记录一次面试当中遇到的题(1)
  • element-ui 的el-table,多选翻页后,之前选择的数据丢失问题处理
  • 黑马教程强化day2-1
  • JAVA毕业设计227—基于SpringBoot+hadoop+spark+Vue的大数据房屋维修系统(源代码+数据库)
  • Linux 文件内容的查询与统计
  • xilinx的gt的ALIGN_COMMA_WORD设置的作用
  • UE5 学习系列(五)导入贴图资产
  • 纯血Harmony NETX 5小游戏实践:2048(附源文件)
  • vuetify、nuxt报错lh.at is not a functionlh.at‘ is undefined
  • R语言 | 如何使用R书写html文档?
  • 打造超轻量的仿chatgpt的AI聊天应用
  • IDEA 连接 Docker 一键打镜像
  • LHM深度技术解析:基于多模态Transformer的单图秒级可动画3D人体重建模型
  • 2025.06.11【Ribo-seq】|根据注释文件获取外显子及ORF序列
  • Unity基础-Resources资源动态加载
  • 大模型在输尿管上段积脓预测与治疗方案制定中的应用研究
  • 传输层协议TCP(下)
  • AJAX、Axios 与 Fetch:现代前端数据请求技术对比
  • 提升iOS开发效率:通过KeyMob等工具进行全面性能分析与调试
  • 解决windows下pycharm终端conda无法激活虚拟环境问题
  • IntelliJ IDEA代码提示忽略大小写设置详解
  • TRO警报,Kim Haskins维权进行时:卖猫周边或面临TRO冻结?
  • 【群体结构ADMIXTURE之三】监督分群在祖先成分分析中的应用及原理
  • 建站SEO优化之站点地图sitemap