Linux学习日记 —— 10.5.1 Shell基础-Bash变量-数值运算与运算符
2018-03-06 22:08
1361 查看
在Linux的shell中,变量的值的类型默认是字符串,不能直接进行数值运算。
要想对变量进行数值运算,需要采用特殊的方法。
1. declare声明变量类型
方法1:declare声明变量类型
方法2:expr或let数值运算工具
注意:expr后面要有空格。
$()的作用是优先执行括号内的命令,并将命令的执行结果保存在内存中(而不是直接输出)。
方法3. ((运算式))或[表达式]
说明:括号内部两侧可以有空格,也可省略空格。
((表达式))和[表达式] 的作用相同。
说明:+号左右两侧的空格也可省略。
总结:推荐使用第三种方法,因为它更加方便和灵活。
4. 运算符
Linux中的运算符主要有单目运算符和双目运算符,运算符也有优先级的高低之分。
运算符主要有以下这些:
说明:对于该表,数值越大,优先级越高。故赋值运算符的优先级最低。
注意: 小括号内的表达式的优先级最高,会优先运算。因此,可以用小括号改变运算符的优先级。
优先级越高,会先进行运算;相同优先级的运算符,按照先后顺序顺序运算。
说明:
对于逻辑与(&&)运算,只有当两侧的值都为非0时,整个表达式的值才为1。
对于逻辑或(||)运算,只有当两侧的值都为0时,整个表达式的值才为0。
[root@localhost ~]# aa=11 [root@localhost ~]# b=22 [root@localhost ~]# c=$aa+$bb [root@localhost ~]# echo $cc 11+22
要想对变量进行数值运算,需要采用特殊的方法。
1. declare声明变量类型
[root@localhost ~]# declare [+/-] [选项] 变量名 选项: - 给变量设定类型属性。 + 取消变量的类型属性。 -i 将变量声明为整型(integer)。 -x 将变量声明为环境变量。 -p 查看变量被声明的类型。
方法1:declare声明变量类型
[root@localhost ~]# aa=11 [root@localhost ~]# bb=22 #给变量aa和bb赋值 [root@localhost ~]# declare -i cc=$aa+$bb [root@localhost ~]# echo $cc 33
方法2:expr或let数值运算工具
注意:expr后面要有空格。
示例: [root@localhost ~]# aa=11 [root@localhost ~]# bb=22 [root@localhost ~]# dd=$(expr $aa + $bb) #注意"+"号左右两侧必须有空格 [root@localhost ~]# echo $dd 33
$()的作用是优先执行括号内的命令,并将命令的执行结果保存在内存中(而不是直接输出)。
方法3. ((运算式))或[表达式]
说明:括号内部两侧可以有空格,也可省略空格。
((表达式))和[表达式] 的作用相同。
示例: [root@localhost ~]# aa=11 [root@localhost ~]# bb=22 [root@localhost ~]# ff=$(( $aa + $bb )) [root@localhost ~]# echo $ff 33 [root@localhost ~]# gg=$[ $aa + $bb ]
说明:+号左右两侧的空格也可省略。
总结:推荐使用第三种方法,因为它更加方便和灵活。
4. 运算符
Linux中的运算符主要有单目运算符和双目运算符,运算符也有优先级的高低之分。
运算符主要有以下这些:
优先级 | 运算符 | 类型 | 说明 |
---|---|---|---|
13 | +、- | 单目 | 单目正、单目负。它们是单目运算符的正、负,而不是加、减。 |
12 | !、~ | 单目 | 逻辑非、按位取反或补码。 |
11 | *、/、% | 双目 | 乘、除、取模。 |
10 | +、- | 双目 | 加、减。 |
9 | <<、>> | 双目 | 按位左移、按位右移。 |
8 | <、<=、>、>= | 双目 | 小于、小于等于、大于、大于等于。 |
7 | ==、!= | 双目 | 等于、不等于。 |
6 | & | 双目 | 按位与。 |
5 | ^ | 双目 | 按位异或。 |
4 | | | 双目 | 按位或。 |
3 | && | 双目 | 逻辑与。 |
2 | || | 双目 | 逻辑或。 |
1 | =、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>= | 双目 | 赋值、运算且赋值。 |
注意: 小括号内的表达式的优先级最高,会优先运算。因此,可以用小括号改变运算符的优先级。
优先级越高,会先进行运算;相同优先级的运算符,按照先后顺序顺序运算。
示例: [root@localhost ~]# echo $(( (3+5)*6 )) 48 [root@localhost ~]# echo 4000 $(( 14%3 )) 2 [root@localhost ~]# echo $[ 1&&1 ] 1 [root@localhost ~]# echo $[ 1&&0 ] 0 [root@localhost ~]# echo $[ 0||0 ] 0 [root@localhost ~]# echo $[ ab || a2 ] 0 [root@localhost ~]# echo $[ 0||null ] 0 [root@localhost ~]# echo $[ 1||0 ] 1 [root@localhost ~]# echo $[ a||b ] 1
说明:
对于逻辑与(&&)运算,只有当两侧的值都为非0时,整个表达式的值才为1。
对于逻辑或(||)运算,只有当两侧的值都为0时,整个表达式的值才为0。
相关文章推荐
- Shell基础-Bash变量-数值运算与运算符
- shell基础-bash变量-数值运算与运算符
- Linux学习日记 —— 10.4.2 Shell基础-Bash变量-环境变量
- Linux学习日记 —— 10.4.3 Shell基础-Bash变量-位置参数变量
- Linux学习日记 —— 10.3.3 Shell基础-Bash基本功能-输入输出重定向
- [Shell]Bash变量:数值运算及运算符
- Linux学习日记 —— 10.3.4 Shell基础-Bash基本功能-多命令顺序执行与管道符
- Linux学习日记--基础命令(7)--bash中的变量,配置文件
- Linux学习日记 —— 10.2 Shell基础-脚本执行方式
- 第9章 Shell基础(4)_Bash的运算符及环境变量配置文件
- linux 基础学习之三:bash shell初识 上
- Linux基础学习之bash shell内置命令----type
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
- bash变量-数值运算与运算符/变量测试与内容替换/环境变量配置文件
- Linux基础知识之————shell学习总结之变量引用
- Linux学习之shell变量的运算
- shell-bash学习01基础、打印、环境变量
- Shell 学习(三、vi变量和数值运算,父shell和子shell)
- linux笔记:shell基础-bash变量
- Linux学习 -- Shell基础 -- Bash基本功能