【Shell】算术运算符、流程控制、函数使用、数组以及加载其它文件的变量
文章目录
1.6 Shell算术运算符
1 简介
Shell
和其他编程一样,
支持
包括:算术、关系、布尔、字符串等运算符。
原生
bash
不支持
简单的数学运算,但是可以通过其他命令来实现,例如
expr
。
expr
是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加:

注意:
表达式和运算符之间要有空格
,例如
2+2
是不对的,必须写成
2 + 2
。
完整的表达式要被
`
包含,注意不是单引号,在
Esc
键下边。
下表列出了常用的算术运算符,假定变量
a
为
10
,变量
b
为 20:

注意:
条件表达式要放在方括号之间,并且要有空格,例如
:
[$a==$b]
是错误的,必须写成
[ $a == $b
]
。
2 例子
1.7流程控制
1 if else
1.1 if
if
语句语法格式:

demo
末尾的
fifi
就是
if
倒过来拼写,后面还会遇到类似的。
1.2 if else
if else
语法格式:

1.3 if else-if else
if else-if else
语法格式:

以下实例判断两个变量是否相等:
关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量
a
为
10
,变量
b
为
20
:

案例:
2 for 循环
2.1 格式
2.2 随堂练习
代码如下:
3 while 语句
while
循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式
为:

需求: 计算 1~100 的和
运行脚本,输出:
使用中使用了
Bash let
命令,它用于执行一个或多个表达式,变量计算中不需要加上
$
来表示变量,
具体可查阅:
Bash let
命令
。
4 无限循环
无限循环语法格式:
5 case(switch)
Shell case
语句为多选择语句。可以用
case
语句匹配一个值与一个模式,如果匹配成功,执行相匹配的
命令。
case
语句格式如下:

case
工作方式如上所示。取值后面必须为单词
in
,每一模式必须以右括号结束。取值可以为变量或常
数。匹配发现取值符合某一模式后,其间所有命令开始执行直至
;;
。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果
无一匹配模式,使用星号
*
捕获该值,再执行后面的命令。
下面的脚本提示输入
1
到
4
,与每一种模式进行匹配:

输入不同的内容,会有不同的结果,例如:
6 跳出循环
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,
Shell
使用两个命令来实现该功能:
break
和
continue
。
6.1 break
命令
break
命令允许跳出所有循环(终止执行后面的所有循环)。

6.2 continue
continue
命令与
break
命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

1.8 函数使用
1 函数的快速入门
格式
可以带
function fun()
定义,也可以直接
fun()
定义
,
不带任何参数。
参数返回,可以显示加:
return
返回,如果不加,将以最后一条命令运行结果,作为返回
值。
return
后跟数值
n(0-255)
快速入门

2 传递参数给函数
在
Shell
中,调用函数时可以向其传递参数。在函数体内部,通过
的 形 式 来 获 取 参 数 的 值 , 例 如 ,
1
表示
第一个参数,
$2
表示第二个参数
...
带参数的函数示例:

输出结果:
注意,
不 能 获 取 第 十 个 参 数 , 获 取 第 十 个 参 数 需 要
{10}
。当
n>=10
时,需要使用
${n}
来获取参数。
另外,还有几个特殊字符用来处理参数:

1.9 数组
1 定义数组
数组中可以存放多个值。
Bash Shell
只支持一维数组
(不支持多维数组),初始化时不需要定义数组大
小(。
与大部分编程语言类似,数组元素的下标由
0
开始。
Shell
数组用括号来表示,元素用
"
空格
"
符号分割开,语法格式如下:
array_name=(value1 value2 value3 ... valuen)
1.1
实例

读取数组元素值的一般格式是:
2.1 实例
执行脚本,输出结果如下所示:
2.2
获取数组中的所有元素
使用
@
或
*
可以获取数组中的所有元素,例如:

执行脚本,输出结果如下所示:
2.3
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:

执行脚本,输出结果如下所示:
3 遍历数组
3.1 方式一
3.2 方式二
1.10 加载其它文件的变量
1 简介
和其他语言一样,
Shell
也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的
文件。
Shell 文件包含的语法格式如下:

2 练习
定义两个文件
test1.sh
和
test2.sh
,在
test1
中定义一个变量
arr=(java c++ shell),
在
test2
中对
arr
进行循
环打印输出。
第一步: vim test1.sh

第二步: vim test2.sh
第三步: 执行 test2.sh
好处
:
1.
数据源 和 业务处理 分离
2.
复用 代码扩展性更强
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)