Linux - 数值运算
Shell - 数值运算
因为shell脚本是属于弱语言,没有变量类型的概念,所以定义变量会默认为字符串。就算看上去是一个数字,当直接进行计算时,就会出错:
x=1
echo $x+=1
# 输出1+=1,并不是自己想要的2
所以当我们需要进行数值运算时,我们需要一些特殊的方法,在Linex中提供了好几种方法。
1. 使用 $[]
x=1
echo $[$x+=1]
2. 使用 expr
expr为Linux中的一个命令,可以用于数值计算,也可以用于字符串操作:
x=1
expr 14 % 9
expr 10 + 10
expr $x + 1
# 使用乘号比较特殊,必须用反斜杠
expx $x \* 3
使用expr也存在缺陷:进行计算的值只能为整数,得到的结果也会以整数形式返回。
3. 使用 (())
相比于$[]和expr,这种方式功能比较强大:
- 支持++,--操作
 - 支持多个表达式运算,用逗号分隔
 - 双括号可以进行逻辑运算,四则运算
 - 双括号结构拓展了for,while,if条件测试运算
 - 在双括号结构中,所有变量可以不加入
$符号前缀 
x=1
(( y = x + 1,z = y + 1 ))
echo $z
a=10
b=10
total=$((a*b))
4. 使用 let
var=1
# 这种写法运算符间不能有空格
let "var+=1"
let var+=1
echo $var
												
											Linux - 数值运算的更多相关文章
- linux中的数值运算
		
一.declare 作用:声明变量类型,bash默认变量为字符串类型的,并且字符串在拼接时直接拼接,不需要加号 使用方法: 二.数值运算 加法运算 a= b= c=$(($a+$b)) echo $c
 - Linux学习 - 数值运算
		
1 declare 声明变量类型 declare [+/-] [选项] 变量名 - 给变量设定类型属性 + 取消变量的类型属性 -i 将变量声明为整数型 -x 将变量声明为环境变量(同export) ...
 - shell脚本基础 数值运算 判断 及if语句
		
数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [root@ceshiji ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 ...
 - shell 数值运算
		
declare数值运算 linux默认变量类型为字符串 declare [+/-] [选项] 变量名 '-' 给变量设定类型属性 '+' 取消变量的类型属性 '-a' 将变量声明为数组型 '-i' 将 ...
 - Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构
		
一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...
 - shell简单用法笔记(shell中数值运算)二
		
shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a= b= c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法 ...
 - 在shell script中进行数值运算的两种方法
		
方法1:使用"$((计算式))"的方式进行数值运算,不需要使用declare命令显示声明数值型变量来存储计算结果: 方法2:使用declare命令配合"-i"选 ...
 - shell之数值运算
		
Shell中声明变量默认是字符串, 要参与数值运算,可使用下面方式,简单,表示以数值方式.
 - 数值运算内建函数(core python programming 2nd edition 5.6.2)
		
数值运算内建函数 函数 功能 abs(num) 返回 num 的绝对值 coerce(num1, num2) 将num1和num2转换为同一类型,然后以一个元组的形式返回. divmod(num1, ...
 
随机推荐
- /*带动画效果的hover*/
			
<!DOCTYPE html> /*带动画效果的hover*/ <html lang="en"> <head> <meta charset ...
 - 选择炸了(JIRA)的88个
			
作者:Martin Seibert SEIBERT MEDIA 首席执行官. 原文地址:http://seibert.biz/jirareasons 作者Martin Seibert 是德国互联网代理 ...
 - VMware安装Ubuntu时出现Intel VT-X处于禁用状态的情况的处理办法
			
VMware安装Ubuntu时出现Intel VT-X处于禁用状态的情况的处理办法 VMware安装Ubuntu的出现Intel VT-X处于禁用状态的情况会使已经安装好的Ubuntu虚拟机打不开 ...
 - java中的几种架构对象(PO,VO,DAO,BO,POJO)
			
java中的几种对象(PO,VO,DAO,BO,POJO) 一.PO :(persistant object ),持久对象 可以看成是与数据库中的表相映射的java对象.使用Hibernate来生 ...
 - nkv客户端性能调优
			
此文已由作者张洪箫授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 问题描述 随着考拉业务的增长和规模的扩大,很多的应用都开始重度依赖缓存服务,也就是杭研的nkv.但是在使用过 ...
 - Java中的变量传递机制以及JS中的参数传递机制
			
JAVA: 传递基本类型是 就是基本的值传递 不会影响值本身. package com.wuqi.p1; public class ValuePassTest { public static void ...
 - SCUT - 289 - 小O的数字 - 数位dp
			
https://scut.online/p/289 一个水到飞起的模板数位dp. #include<bits/stdc++.h> using namespace std; typedef ...
 - 解决Navicat无法连接到Mysql
			
Navicat无法连接到Mysql,返回的错误码是Lost connection to MySQL server at ‘reading initial communication packet’, ...
 - Master 接受其它组件的注册
			
Master对其它组件注册的处理: Master接受注册的对象主要就是: Driver.Application.Worker.注意:Executor 不会向 Master 注册,它是向 Driver ...
 - ie9下网页设计兼容模式
			
个人实践使用:ie9下使用低版本ie兼容模式,在网站第一个页面的<head>标签后使用<meta http-equiv="X-UA-Compatible" con ...