【Shell】算术运算符、流程控制、函数使用、数组以及加载其它文件的变量(一)

简介: 【Shell】算术运算符、流程控制、函数使用、数组以及加载其它文件的变量

1.6 Shell算术运算符


1 简介


Shell 和其他编程一样,支持包括:算术、关系、布尔、字符串等运算符。

原生bash 不支持 简单的数学运算,但是可以通过其他命令来实现,例如expr

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

例如,两个数相加:

image.png

注意:

表达式和运算符之间要有空格 ,例如 2+2 是不对的,必须写成 2 + 2 。

完整的表达式要被 ` 包含,注意不是单引号,在 Esc 键下边。

下表列出了常用的算术运算符,假定变量 a 为 10 ,变量 b 为 20:

image.png

注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b]

2 例子


image.png

image.png

1.7流程控制


1 if else


1.1 if


if 语句语法格式:

image.png

image.png

末尾的fifi就是if倒过来拼写,后面还会遇到类似的。

1.2 if else


if else 语法格式:

image.png

1.3 if else-if else


if else-if else 语法格式:

image.png

以下实例判断两个变量是否相等:

关系运算符


关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

下表列出了常用的关系运算符,假定变量a 10,变量b 20

image.png

image.png

image.png

2 for 循环


2.1 格式


image.png

2.2 随堂练习



image.png

代码如下:

image.png

3 while 语句


while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

image.png

需求: 计算 1~100 的和

image.png

使用中使用了Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上$ 来表示变量,

具体可查阅:Bash let 命令

4 无限循环


无限循环语法格式:

image.png

5 case(switch)


Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

image.png

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

下面的脚本提示输入 1 到 4 ,与每一种模式进行匹配:

image.png

image.png

输入不同的内容,会有不同的结果,例如:

image.png

6 跳出循环


在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:

break 和 continue 。

6.1 break 命令

break 命令允许跳出所有循环(终止执行后面的所有循环)。

image.png

6.2 continue

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

image.png

1.8 函数使用


1 函数的快速入门


格式

image.png

可以带 function fun() 定义,也可以直接 fun() 定义 , 不带任何参数。

参数返回,可以显示加: return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return 后跟数值 n(0-255)

快速入门

image.png

相关文章
|
2月前
|
Shell
Shell 文件包含
10月更文挑战第5天
35 4
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
存储 Shell
Shell 数组
【10月更文挑战第16天】
32 3
|
2月前
|
Java Shell 网络安全
Shell 流程控制
10月更文挑战第4天
36 2
|
2月前
|
Shell PHP 索引
Shell 数组
10月更文挑战第2天
24 1
|
2月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
28 0
|
3月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
3月前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
50 5
|
3月前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
33 0
|
Shell
shell编程之函数
shell编程之函数
72 1