Linux Bash Shell编程(五):变量(下)变量运算、内容替换、环境变量配置文件

您所在的位置:网站首页 字符串变量的说法合法吗 Linux Bash Shell编程(五):变量(下)变量运算、内容替换、环境变量配置文件

Linux Bash Shell编程(五):变量(下)变量运算、内容替换、环境变量配置文件

2024-07-11 05:42| 来源: 网络整理| 查看: 265

Linux Bash Shell编程(五):变量(下)变量运算、内容替换、环境变量配置文件

上一节,我们对变量有了初步的了解,学会了变量的分类以及各种变量的基本操作和作用。本节我们来了解以下变量运算和运算符、变量测试和内容替换、环境变量配置文件相关内容。

Bash Shell(五)

Bash变量的数值运算

变量的数值运算,就是对变量的加减乘除等数学运算。但是,当我们想当然地执行以下“+”操作,会发现根本不能得到正确结果

#省略命令提示符 a=123 b=456 c=$a+$b echo $c #得到以下结果 123+456

原来,Bash中的变量默认都是字符串型变量,而Bash又没有其他语言中的隐式变量类型转换,所以不能得到正确结果

那么,如何才能使变量支持数值运算呢?答案是用declare命令手动声明变量的类型

 声明变量类型 declare [+/-] [选项] 变量名称 选项/标识作用-给变量设定类型属性+取消变量的类型属性iinteger 声明变量为整数型xexport 声明变量为环境变量-p显示指定变量的类型 注意,设定与取消的标识与一般情况相反,-为设定类型;+为取消设定也可以在declare命令中直接声明一个新的变量并声明其类型

例如,

a=1 declare -i a declare -p a declare -i a="1" #此行为上一行查询变量类型的返回值 export a declare -p a declare -ix a="1" #此行为上一行查询变量类型的返回值

声明数值类型后,变量就支持数值运算了

 数值运算

已经声明为数值型的变量可以进行数值运算和赋值运算

注意,在给一个新变量赋值之前,必须将该变量声明为数值变量,否则会出现示例中结果

#上文已经声明数值变量a=1,b=2 zheng@Kali:~/Shell$ c=$a+$b zheng@Kali:~/Shell$ echo $c 1+2

因为未经声明的变量依然默认为字符串型,Shell将后面的值识别成字符串而没有使用数值运算。

而下面的例子中得到了正确结果

zheng@Kali:~/Shell$ declare -i c=$a+$b #同样可以将变量声明与赋值放在一行中 zheng@Kali:~/Shell$ echo $c 3 如果变量未经声明,仍然可以用数值运算工具进行隐式类型转换与数值计算 zheng@Kali:~/Shell$ a=1 zheng@Kali:~/Shell$ b=2 zheng@Kali:~/Shell$ c=$(expr $a + $b) zheng@Kali:~/Shell$ echo $c 3 zheng@Kali:~/Shell$ declare -p c declare -- c="3" #c仍然是一个字符串型变量

在进行expr运算时,用$()包含值表示将该命令的运算结果而不是其本身赋值给变量

注意,"+"两侧必须存在空格,与变量赋值语句不同,进行数值运算并被赋值的结果变量若不加声明仍是字符串变量

以上的数值运算工具格式上并不符合常用数学格式,不建议使用

下面提供了两种推荐的数值运算符号,$(())与$[],

#上文声明a=1,b=2,且a b均 不 是数值型变量 zheng@Kali:~/Shell$ c=$(($a+$b)) zheng@Kali:~/Shell$ echo $c 3 zheng@Kali:~/Shell$ c=$[$a+$b] zheng@Kali:~/Shell$ echo $c 3 +运算符两边的空格可要可不要  其他运算符

其他运算符以及运算优先级(越大越优先)

优先级运算符说明13+ -正负 符号运算12! ~逻辑非,计算补码(按位取反)11* / %乘、整除、取模10+ -加减9>按位左移,按位右移8= < >数值大小运算判断7== !=等于、不等于6&按位与5^按位异或4|按位或3&&逻辑与2||逻辑或1=赋值

运算符举例:

zheng@Kali:~/Shell$ echo $[12*3/9+4] 8 zheng@Kali:~/Shell$ echo $[10


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3