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

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 5
 echo $?

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=15
 if [ $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.kler.cn/a/553651.html

相关文章:

  • 【Python游戏】双人简单对战游戏
  • 数组和指针常见笔试题(深度剖析)
  • Centos7 使用 yum 报错 Could not retrieve mirrorlist
  • 【Rust中级教程】1.10. 引用及内部可变性(简单回顾):引用、内部可变性、`Cell`类型及相关操作
  • less 和 sass 的异同(css 预处理语言)
  • 非docker安装open-webui连接ollama实现deepseek本地使用,集成其他openai模型,常见启动报错问题解决。
  • 人工智能丨卷积神经网络的概念, 它与普通的神经网络有何不同
  • HarmonyOS的核心特性:分布式技术引领创新
  • DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命
  • Zookeeper(54)如何使用Zookeeper的命令行工具?
  • Redis-03高级篇下-最佳实践:
  • Nginx下proxy_redirect的三种配置方式
  • scroll、offset、client三大家族和getBoundingClientRect方法
  • android 定制mtp连接外设的设备名称
  • 基于JavaSpringboot+Vue实现前后端分离房屋租赁系统
  • lua的local 变量和self 变量的理解理解后解决自己写的bug.
  • 【论文阅读】DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
  • git-提交时间和作者时间的区别
  • 当使用vcpkg安装的qt5时,在VS调用出现libcrypto-*-x64.dll不是有效路径时
  • Docker如何切换文件目录安装——详细攻略!