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

shell——分支语句

文章目录

  • 基本语法
  • 常用判断条件
    • (1)两个整数之间比较
    • (2)按照文件权限进行判断
    • (3)按照文件类型进行判断
    • (4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)
  • if分支语句
    • 基本语法
    • 单分支判断:
    • 多分支判断
  • case 语句
    • 基本语法
    • 编写脚本

基本语法

(1)test condition
(2)[ condition ](注意condition 前后要有空格)
注意:条件非空即为true,[ atguigu ]返回true,[ ] 返回false。

$?为0表示返回值为0,表示运算正确。

test $a -eq 6
echo $?

1

 test $a -eq 5echo $?

0

常用判断条件

(1)两个整数之间比较

  • -eq 等于(equal) -ne 不等于(not equal)
  • -lt 小于(less than) -le 小于等于(less equal)
  • -gt 大于(greater than) -ge 大于等于(greater equal)
    注:如果是字符串之间的比较,用等号“=”判断相等;用“!=”判断不等。
[ $a -lt 8 ]
echo $?

0

 [ $a -gt 3 ]echo $?

0

 [ $a -le 3 ]echo $?

1

(2)按照文件权限进行判断

  • -r 有读的权限(read)
  • -w 有写的权限(write)
  • -x 有执行的权限(execute)
 [ -r add.sh ]
echo $?

0

 [ -x test1.sh ]echo $?

1

(3)按照文件类型进行判断

  • -e 文件存在(existence)
  • -f 文件存在并且是一个常规的文件(file)
  • -d 文件存在并且是一个目录(directory)
[ -e test1.sh ]
echo $?

0

 [ -f t ]
echo $?

1

 [ -d t ]
echo $?

1

 [ -f parameter.sh ]
echo $?

0

(4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)

类似于if else:表达式 ,满足条件输出,不满足条件输出
[ $a -lt 20 ] && echo "a<20" || "echo a>20"

a<20

if分支语句

基本语法

(1)单分支

if [ 条件判断式];then
程序
fi

或者

if [ 条件判断式]
then
程序
fi

(2)多分支

if [ 条件判断式]
then
程序
elif [ 条件判断式]
then
程序
else
程序
fi

注意事项:
①[ 条件判断式],中括号和条件判断式之间必须有空格
②if 后要有空格

单分支判断:

a=25
if [ $a -gt 18 ];then echo ok; fi 

ok

 a=15if [ $a -gt 18 ];then echo ok; fi 

创建脚本文件:
在这里插入图片描述

 chmod +x if_test.sh
./if_test.sh 25

ok

多个条件判断:

a=23
if [ $a -gt 18 ]&&[ $a -le 35 ];then echo ok;fi

ok

或者 :-a 表示and ,-o 表示or

if [ $a -gt 18 -a $a -le 35 ];then echo ok;fi

ok

多分支判断

在这里插入图片描述

./if_test.sh 25

青年人

 ./if_test.sh 216

老年人

 ./if_test.sh 16

未成年

./if_test.sh 45

中年人

case 语句

基本语法

case $变量名in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

注意事项:
(1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
(2)双分号“;;”表示命令序列结束,相当于java 中的break。
(3)最后的“*)”表示默认模式,相当于java 中的default。

编写脚本

新建脚本文件:
vim case_test.sh
在这里插入图片描述

 chmod +x case_test.sh ./case_test.sh 1

one

 ./case_test.sh 2

two

 ./case_test.sh 3

three

./case_test.sh 4

other number

http://www.lryc.cn/news/538267.html

相关文章:

  • 【vue3】实现pdf在线预览的几种方式
  • (学习总结22)Linux 基本指令1
  • Linux:用 clang 编译带 sched_ext 功能内核
  • Redis 的集群 --- 数据分开扛
  • 微信小程序中缓存数据全方位解惑
  • LeetCode 每日一题 2025/2/10-2025/2/16
  • 使用 Shiro 和 JPA 结合 MySQL 实现一个简易权限管理系统
  • DeepSeek与医院电子病历的深度融合路径:本地化和上云差异化分析
  • 设计模式:代理模式
  • 141,【1】buuctf web [SUCTF 2019]EasyWeb
  • 破解微服务疑难杂症:2025年全解决方案
  • Node.js 中的 Event 模块详解
  • EasyRTC嵌入式WebRTC视频通话SDK支持Web浏览器、Linux、ARM、Android、iOS
  • pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网
  • 【玩转全栈】----Django模板语法、请求与响应
  • 网络安全:挑战、技术与未来发展
  • DeepSeek 服务器繁忙的全面解决方案
  • 将OpenWrt部署在x86服务器上
  • 计算机视觉:卷积神经网络(CNN)基本概念(一)
  • 企业文件共享中的权限管理与安全风险防范
  • 使用DeepSeek建立一个智能聊天机器人0.12
  • 国家队出手!DeepSeek上线国家超算互联网平台!
  • Deep seek学习日记1
  • 乐理笔记(持续更新)
  • 【动态路由】系统Web URL资源整合系列(后端技术实现)【nodejs实现】
  • PHP高效、轻量级表格数据处理库 OpenSpout ,很好用
  • 2010年上半年软件设计师考试上午真题的知识点整理(附真题及答案解析)
  • EventSource的使用
  • 【第12章:深度学习与伦理、隐私—12.3 深度学习模型的透明性与可解释性提升策略】
  • RocketMq中RouteInfoManger组件的源码分析