shell基础教程03 运算

站长QQ群

用于技术交流、投稿、商务合作 站长唯一QQ:528482275 站长唯一QQ群:649978721

IT运维技术交流

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

 

shell的运算和其他语言有很大不同

 

(我们暂时只了解这些运算符的基本用法,方便展开讨论后面的内容,高级应用以后穿插着介绍)

 

数学运算


 

先看栗子:

ss@ANDROID:~$ let n=3+1            # 加法ss@ANDROID:~$ i=$[3-1]             # 减法ss@ANDROID:~$ j=$((3*2))           # 乘法,等价于$[]形式。ss@ANDROID:~$ k=$(expr 3 / 2)      # 除法,运算符两边必须使用空格分隔。ss@ANDROID:~$ ((m=3%2))            # 取模,等价于$()形式

 

这里我就不echo出变量的值了,你试着echo下会不会发现有些值和预想中的不同?是的,虽然shell内置了对整数四则运算的支持,但是并不支持浮点运算,要做精密计算可以使用bc命令。

ss@ANDROID:~$ echo 3.1415926 * 2.1 | bc6.5973444                                 ss@ANDROID:~$

 

上面有个陌生的符号——“|”,在Linux中叫做管道符,它的作用是将上一个命令的输出给下一个命令的输入。通过管道符就能将文本流串联起来,Linux有个设计哲学:一个命令只做一件事,并把事情做好,通过管道符将各个命令组合起来完成复杂的任务。

 

判断


 

数字判断:

ss@ANDROID:~$ [[ 3 -eq 2 ]]       # 等于ss@ANDROID:~$ echo $?1ss@ANDROID:~$ [[ 3 -ne 2 ]]       # 不等于ss@ANDROID:~$ echo $?0ss@ANDROID:~$ [[ 3 -gt 2 ]]       # 大于ss@ANDROID:~$ echo $?0ss@ANDROID:~$ [[ 3 -lt 2 ]]       # 小于ss@ANDROID:~$ echo $?1ss@ANDROID:~$ [[ 3 -le 2 ]]       # 小于等于ss@ANDROID:~$ echo $?1ss@ANDROID:~$ [[ 3 -ge 2 ]]       # 大于等于ss@ANDROID:~$ echo $?0

字符串判断

ss@ANDROID:~$ [[ "3" == "2" ]]       # 等于ss@ANDROID:~$ echo $?1ss@ANDROID:~$ [[ "3" != "2" ]]        # 不等于ss@ANDROID:~$ echo $?0ss@ANDROID:~$ [[ -z "" ]]             # 字符串为空ss@ANDROID:~$ echo $?0ss@ANDROID:~$ [[ -n "" ]]             # 字符串不为空ss@ANDROID:~$ echo $?1ss@ANDROID:~$

shell的判断感觉怪怪的,数字判断用英文字符,字符串判断用数学运算符。那既然是“祖师爷”他们定的规矩就照做吧。上文中的0和1是命令的退出状态码,0表示正常,1以上的表示不正常,而获取上一条命令的退出状态码则用“$?”。

 

“[[ ]]" 可以用 "[ ]" 替代,"[ ]" 可以用test命令替代:

ss@ANDROID:~$ test 3 -ge 2ss@ANDROID:~$ echo $?0ss@ANDROID:~$

但是建议使用"[[ ]]",暂时不要问为什么哈。另外”[[ ]]“里组成的每个元素需要用空格分隔。

 

逻辑运算


 

-a          # 逻辑与

-o          # 逻辑或

!            # 逻辑否

&&        # 逻辑与

||           # 逻辑或

 

"-a"、"-o"用在"[[ ]]"里面,”&&“、”||"用在多个"[[ ]]"之间。"!"里外都可以。

 

 

总结


 

  • shell内置的四则运算并不支持浮点运算
  • 扩展知识 “|”、bc命令、$?、退出状态码
  • 数字判断用英文字符,字符串判断用数学运算符
  • -a、-o、!、&&、||

     

 

未经允许不得转载:作者:小牛, 转载或复制请以 超链接形式 并注明出处 小牛博客
原文地址:《shell基础教程03 运算》 发布于2019-06-19

分享到:
赞(0) 打赏

评论 抢沙发

6 + 7 =


shell基础教程03 运算

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

网站公告

开启新征程,加油少年。 2019-10-6

开启新征程,加油少年。

不知不觉,都十月多了,即将面临找工作的我来说是尤为重要的,

不管怎么说,十月加油吧。

我已阅读
Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册