Shell脚本test和[]和[[ ]]和(())语句应用

news/2024/10/18 0:21:18/

记录:437

场景:Shell脚本test、[]、[[]]、(())语句应用。

版本:CentOS Linux release 7.9.2009。

1.test和[]和[[]]和(())语句

test,test命令用于检测某个条件是否成立。可以进行数值、字符和文件等方面的测试。

[],test命令简写为[]。支持关系运算符等。

[[ ]],支持逻辑运算符。

格式:test expression

格式:[ expression ]

格式:[[ expression01 || expression02 ]]

格式:(( expression01 && expression02 ))

注意:[]和expression之间有空格,这两个空格是必须的,否则执行时会导致语法错误。

2.使用test命令

2.1脚本

脚本名称:b2023052901.sh

脚本内容:

#!/bin/bashecho "请分别输入GDP,人口数,以空格分割:"
read gdp population#使用test表达式
if test ${gdp} -gt 30000 && test ${population} -lt 2000 ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一类城市."
elif test ${gdp} -gt 20000 && test ${population} -lt 1500 ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是二类城市."
elif test ${gdp} -gt 10000 && test ${population} -lt 1000 ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是三类城市."
elif test ${gdp} -gt 5000 && test ${population} -lt 500 ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是四类城市."
elseecho "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi

2.2执行与输出

执行命令:bash b2023052901.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023052901.sh 
请分别输入GDP,人口数,以空格分割:
30001 1999
城市GDP: 30001 亿, 人口: 1999 万,这是一类城市.

3.使用[]

3.1脚本

脚本名称:b2023052902.sh

脚本内容:

#!/bin/bashecho "请分别输入GDP,人口数,以空格分割:"
read gdp population#使用[]表达式
if [ ${gdp} -gt 30000 ] && [ ${population} -lt 2000 ] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一类城市."
elif [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是二类城市."
elif [ ${gdp} -gt 10000 ] && [ ${population} -lt 1000 ] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是三类城市."
elif [ ${gdp} -gt 5000 ] && [ ${population} -lt 500 ] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是四类城市."
elseecho "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi

3.2执行与输出

执行命令:bash b2023052902.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023052902.sh 
请分别输入GDP,人口数,以空格分割:
20001 1499
城市GDP: 20001 亿, 人口: 1499 万,这是二类城市.

4.使用[[]]

4.1脚本

脚本名称:b2023052903.sh

脚本内容:

#!/bin/bashecho "请分别输入GDP,人口数,以空格分割:"
read gdp population#使用[[]]表达式
if [[ ${gdp} -gt 30000 && ${population} -lt 2000 ]] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一类城市."
elif [[ ${gdp} -gt 20000 && ${population} -lt 1500 ]] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是二类城市."
elif [[ ${gdp} -gt 10000 && ${population} -lt 1000 ]] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是三类城市."
elif [[ ${gdp} -gt 5000 && ${population} -lt 500 ]] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是四类城市."
elseecho "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi

4.2执行与输出

执行命令:bash b2023052903.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023052903.sh 
请分别输入GDP,人口数,以空格分割:
10001 999
城市GDP: 10001 亿, 人口: 999 万,这是三类城市.

5.使用(())

5.1脚本

脚本名称:b2023052904.sh

脚本内容:

#!/bin/bashecho "请分别输入GDP,人口数,以空格分割:"
read gdp population
#使用(())表达式
if (( ${gdp} > 30000 && ${population} < 2000)) ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一类城市."
elif (( ${gdp} > 20000 && ${population} < 1500)) ;then echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是二类城市."
elif (( ${gdp} > 10000 && ${population} < 1000)) ;then echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是三类城市."
elif (( ${gdp} > 5000 && ${population} < 500)) ;then echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是四类城市."
elseecho "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi

5.2执行与输出

执行命令:bash b2023052904.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023052904.sh 
请分别输入GDP,人口数,以空格分割:
5001 499
城市GDP: 5001 亿, 人口: 499 万,这是四类城市.

6.test和[]和[[]]和(())语句联合使用

6.1脚本

脚本名称:b2023052905.sh

脚本内容:

#!/bin/bashecho "请分别输入GDP,人口数,以空格分割:"
read gdp population
#test和[]和[[]]和(())语句联合使用
if test ${gdp} -gt 30000 && test ${population} -lt 2000 ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是一类城市."
elif [ ${gdp} -gt 20000 ] && [ ${population} -lt 1500 ] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是二类城市."
elif [[ ${gdp} -gt 10000 && ${population} -lt 1000 ]] ;thenecho "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是三类城市."
elif (( ${gdp} > 5000 && ${population} < 500)) ;then echo "城市GDP: ${gdp} 亿, 人口: ${population} 万,这是四类城市."
elseecho "城市GDP: ${gdp} 亿, 人口: ${population} 万."
fi

6.2执行与输出

执行命令:bash b2023052905.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023052905.sh 
请分别输入GDP,人口数,以空格分割:
30001 1999
城市GDP: 30001 亿, 人口: 1999 万,这是一类城市.
[root@hadoop211 tutorial]# bash b2023052905.sh 
请分别输入GDP,人口数,以空格分割:
20001 1499
城市GDP: 20001 亿, 人口: 1499 万,这是二类城市.
[root@hadoop211 tutorial]# bash b2023052905.sh 
请分别输入GDP,人口数,以空格分割:
10001 999
城市GDP: 10001 亿, 人口: 999 万,这是三类城市.
[root@hadoop211 tutorial]# bash b2023052905.sh 
请分别输入GDP,人口数,以空格分割:
5001 499
城市GDP: 5001 亿, 人口: 499 万,这是四类城市.
[root@hadoop211 tutorial]# bash b2023052905.sh 
请分别输入GDP,人口数,以空格分割:
30001 2001
城市GDP: 30001 亿, 人口: 2001 万.

以上,感谢。

2023年5月29日


http://www.ppmy.cn/news/104018.html

相关文章

doris分区、join

动态分区和临时分区 动态分区 旨在对表级别的分区实现生命周期管理(TTL)&#xff0c;减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。只支持 Range 分区。原理 在某些使用场景下&#xff0c;用户会将表按照天进行分区划分&#xff0c;每天定时执行例行任…

计算机组成原理-中央处理器-控制器功能和原理

目录 一、硬布线控制器 二、硬布线控制器的设计(硬件) 2.1分析每个阶段的微操作序列(取址、间址、执行、中断) 2.2选择cpu的控制方式 2.3 安排微操作时序 2.4电路设计 2.4.1列出操作时间表 2.4.2 写出微操作命令的最简表达式 2.4.3画出电路图 *三、微程序控制器基本原理 四…

mysql数据库连接失败授权认证 reading authorization packet --别的电脑可以,但是本地电脑连接失败

1.分析原因是否由于本机多次失败连接导致 在能连接的主机上或者服务器上 查看当前数据库阻断连接次数是否在不断增长 SHOW GLOBAL STATUS LIKE Aborted_connects;1.2观察这个终端连接次数是否一直在增长 如果一直在增长&#xff0c;说明mysql服务器被计算机不断的进行连接且被…

完全掌握git入门到精通各类免费书籍整理

大型软件项目开发&#xff0c;多人群组开发都离不开的版本控制工具 git&#xff0c;命令简单&#xff0c;想要完全掌握却需要付出一点时间。我们将一些评价较高的git免费学习资料网站做了整理&#xff0c;收录到 学习使用git完全指南各种免费书籍分享 完全掌握git入门到精通各…

在线排查内存泄漏的步骤

一、在线排查内存泄漏的步骤 想到内存泄漏问题的排查&#xff0c;很多开发会想到使用 Valgrind。使用 Valgrind 有几个局限&#xff1a; 需要安装 Valgrind 需要启停服务进程 影响服务进程性能 依赖于测试用例覆盖到 BUG 分支 由于这些原因&#xff0c;线上内存泄露问题并…

Vue3的options Api

过一边Vue3的Api对一些不常用的选项加深印象&#xff1a; 一、状态选项&#xff1a; expose函数&#xff1a;使用expose函数来控制组件被ref时向外暴露的对象内容&#xff0c;借此来维护组件的封装性&#xff0c;它和ref配合使用。 二、生命周期选项&#xff1a; errorCaptu…

信息安全实践1.3(HTTPS)

前言 做这个实验对Tomcat的版本有要求&#xff0c;最好是使用Tomcat8。因为我之前使用Tomcat10&#xff0c;然后一直做不出来。 要求 部署Web服务器端HTTPS功能&#xff0c;通过网络嗅探分析HTTPS通过SSL实施安全保护的效果 关键步骤 首先要给tomcat配置https&#xff0c;也…

详解FreeRTOS:嵌入式多任务系统的任务互斥和优先级反转(理论篇—9)

在嵌入式多任务系统中,有些资源必须是独占使用的,多个任务对这样的资源的并发访问将导致错误的发生。一般来说,对需要独占使用的资源必须使用互斥方法将对其的并发访问串行化。 在优先级多任务系统中引入互斥方案,会导致任务优先级反转的问题:假如某时低优先级的任务占有…