SHELL脚本攻略(学习笔记)--1.5 进行数学运算

使用let、(())或[]进行基本的整数运算,使用expr和bc进行高级的运算,包括小数运算。

[[email protected] tmp]# str=10

[[email protected] tmp]# let str=str+6

[[email protected] tmp]# let str-=5

[[email protected] tmp]# echo $str

11

还可以自增、自减运算。

[[email protected] tmp]# let str++;echo $str

12

[[email protected] tmp]# let ++str;echo $str 

13

[[email protected] tmp]# let str--;echo $str 

12

[[email protected] tmp]# let --str;echo $str 

11

如果要让运算处于命令之中,即不需要额外的赋值行为,可以使用$(())。

[[email protected] tmp]# echo $((str++))

12

[[email protected] tmp]# echo $((str--))  #从这个结果中是否发现了问题?

13

[[email protected] tmp]# echo $((str--))

12

[[email protected] tmp]# echo $((str++))  #还有这个结果

11

[[email protected] tmp]# echo $((str++))

12

不知道是我计算不来,还是$(())的问题,如果是$(())后缀自加(i++)和后缀自减(i--),则在后缀自增后再后缀自减将再执行一次自增行为,反之自减到自增也是。

但是使用$(())计算前缀自增和自减变换时没问题,let自增自减也都没有问题。

[[email protected] tmp]# echo $((--str))

12

[[email protected] tmp]# echo $((--str))

11

[[email protected] tmp]# echo $((++str))  #结果正常

12

[[email protected] tmp]# echo $((++str))

13

[[email protected] tmp]# echo $((--str))

12

使用[]也可以。

[[email protected] tmp]# echo $[str=$str+6]  #在[]中使用了变量符号$

18

[[email protected] tmp]# echo $[str=str+6]  #[]中没有使用$符号

24

但是如果$[$str=str+6]或$[$str=$str+6]将出错。

[[email protected] tmp]# echo $[$str=str+6]

-bash: 24=str+6: attempted assignment to non-variable (error token is "=str+6")

[[email protected] tmp]# echo $[$str=$str+6]

-bash: 24=24+6: attempted assignment to non-variable (error token is "=24+6")

总结下变量的运算方法:

[[email protected] tmp]# i=10

[[email protected] tmp]# let i=i-1

[[email protected] tmp]# let i-=1

[[email protected] tmp]# i=$((i-1))

[[email protected] tmp]# i=$[ i - 1 ]  #中括号隔壁必须写空格

[[email protected] tmp]# i=$[ $i - 1 ]
时间: 2024-10-09 17:48:05

SHELL脚本攻略(学习笔记)--1.5 进行数学运算的相关文章

SHELL脚本攻略(学习笔记)--1.7 expr命令全解

expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字符串提取.字符串长度计算等功能.它还具有几个特殊功能,判断变量或参数是否为整数.是否为空.是否为0等. 先看expr命令的info文档info coreutils 'expr invocation'的翻译. 16.4.1 字符串表达式 ------------------------- 'expr'支持模式匹配和字符串操作.字符串表达式的优先级高于数值表达式和 逻辑关系表达式. 'STRING : REGEX' 执行模式匹配.两端参数

SHELL脚本攻略(学习笔记)--1.6 数学运算和bc命令

本文目录: 1.6.1 基本整数运算 1.6.2 bc命令高级算术运算 使用let.$(())或$[]进行基本的整数运算,使用bc进行高级的运算,包括小数运算.其中expr命令也能进行整数运算,还能判断参数是否为整数,具体用法见expr命令全解. 1.6.1 基本整数运算 [[email protected] tmp]# str=10 [[email protected] tmp]# let str=str+6 # 等价于let str+=6 [[email protected] tmp]# l

《Linux Shell脚本攻略》 笔记 第一章:Shell起步基础

<Linux Shell脚本攻略> 笔记 第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符串的形式存储. 2.var=value; //赋值操作 var = value: //相等操作 3.获取字符串的长度 [[email protected] ~]$ var=yang [[email protected] ~]$ length=${#var} [[email protected] ~]$ echo $length

《Linux Shell脚本攻略》 笔记 第二章:常用命令

<Linux Shell脚本攻略> 笔记 第二章:常用命令 1.cat cat -s //多个空白行压缩成一个 cat *.txt | tr -s '\n'   //移除空白行 cat -n //加行号 2.find 沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作. eg: find ./ ! -name "*.txt" -print [[email protected] program_test]# find ./  -type f -name "

《Linux Shell脚本攻略》 笔记 第三章:文件操作

<Linux Shell脚本攻略> 笔记 第三章:文件操作 1.生产任意大小的文件 [[email protected] dd_test]# [[email protected] dd_test]# dd if=/dev/zero of=junk.data bs=1k count=10 10+0 records in 10+0 records out 10240 bytes (10 kB) copied, 0.00137023 s, 7.5 MB/s 2.文件系统相关测试 [ -f $file

《Linux Shell脚本攻略》 笔记 第四章:高效文本处理

<Linux Shell脚本攻略> 笔记 第四章:高效文本处理 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2.grep用法 //在多级目录中对文本进行递归检索 [[email protected] program_test]# grep "yang" ./ -Rn ./test.txt:6:laoyang ./right.txt:1:1 yang man //忽略大小写匹配 [[email pr

《Linux Shell脚本攻略》 笔记 第六章:打包压缩

<Linux Shell脚本攻略> 笔记 第六章:打包压缩 //1.打包.解包 [[email protected] program_test]# tar -cf output.tar 11.txt 22.txt 33.txt [[email protected] program_test]# tar -xf output.tar -C ./tar-file/  //-C指定要提取到哪个路径? //列举出归档文件中的内容 [[email protected] program_test]# ta

Linux Shell 脚本攻略阅读笔记第1章 小试牛刀

一.简介 1.Bash(Bourne Again Shell),目前大多数GNU/Linux系统默认的shell环境. 命令都是在shell终端中输入并执行.打开终端后,提示符的形式:[email protected]$       或    [email protected] #     ($表示普通用户,#表示管理员用户root) 2.shell脚本是一个以#!(shebang)起始的文本文件,如下:   #!/bin/bash shebang是一个文本行,其中#!位于解释器路径之前./bi

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp

Linux Shell脚本攻略(1.12)

1.12 函数和参数 和其他脚本语言一样,Bash同样支持函数,并且可以传递参数. 1.12.1 函数定义和传参 #!/bin/bash function fname() #也可以用fname()代替 { echo $1,$2; #访问参数1和参数2 echo "[email protected]"; #以列表的方式一次性打印所有参数 echo "$*"; #类似于[email protected],但是参数被作为单个实体 return 0; #返回值 } fnam