首先这里所说的算术运算是指加法(+), 减法(-),乘法(*),整除(/), 求余(%)四种运算,可以通过添加括号改变优先级,并且只能对整数进行运算( Linux Bash Shell默认不支持浮点数运算)

#!/bin/bash
val=`expr 2 + 2` <strong>#expr 参数要为整数</strong>
echo "Total value : $val"
c=`expr $a + $b` <strong>#+前后空一格,否则输a+b=10+20</strong>
echo "a+b=$c"
c=`expr $a - $b`
echo "a-b=$c"
c=`expr $a \* $b` #<strong>必须在*前加\才能实现乘法,因为 * 有其它意义</strong>
echo "a*b=$c"
c=`expr $a / $b`
echo "a/b=$c"
if [ $a == $b ] #<strong>在[]和==前后要有一空格,且必须有[]</strong>
    echo "a = b"
if [ $a != $b ]
then  <strong>#then需要另启一行,不能与if在同一行;[加;就不行要换行了]</strong>
    echo "a!=b"
let "sum=3+6"
echo $sum
sum=$(( 7 * 8 ))
echo $sum
要在Linux Bash Shell中进行算术运算,有 三种写法

一、使用let命令

let "sum=3+5"    # sum <- 8
let "sum=3*5"    # sum <- 15 
let "sum=2/5"    # sum <- 0 
let "sum=11/5"   # sum <- 2 
let "sum=11%5"   # sum <- 1 
let "sum=-6-9"   # sum <- -15
let "sum=(-6-9)*5"  # sum <- -75

注意, 等号右边以及运算符和括号的两边都不能有空格

二、使用expr命令

sum=`expr 2 - 5`     # sum <- -3
sum=`expr 2 + 5`     # sum <- 7 
sum=`expr 3 \* 5`    # sum <- 15
sum=`expr 3 / 5`     # sum <- 0 
sum=`expr 7 / 5`     # sum <- 1
sum=`expr \( 2 - 3 \) \* 6`   # sum <- -6 
sum=`expr 2+4`       # sum <- 2+4
sum=`expr 2-4*6·     # sum <- 2-4*6
sum=`expr 1-(5-8)`   # sum <- 1-(5-8)
注意: 乘号(*), 左括号( , 右括号)必须使用反斜杠(\)转义 expr右边以及运算符和括号的两边必须有空格 ; 如果采用紧凑的写法(紧凑格式可以不对*, (, )进行转义), 则返回算术表达式.

三、使用(( ... )) 的形式

sum=$((3+5))           # sum <- 8 
sum=$(( 3 - 5 ))       # sum <- -2 
sum=$(( 3 * 5 ))       # sum <- 15
sum=$(( 7 / 5 ))       # sum <- 1 
sum=$(( 7 % 5 ))       # sum <- 2 
sum=$(( (1 - 2 )  * 4 ))   # sum <- -4

这种写法比较自由, 无需对运算符和括号做转义处理,也可以采用松散或紧凑的格式.

#!/bin/sh
b=200
#-o	 或运算 or 
#-a	 与运算 and
if [ $a != $b ]
   echo "$a != $b : a is not equal to b" 
if [ $a -lt 100 -a $b -gt 15 ]
   echo "$a -lt 100 -a $b -gt 15 : returns true" 
if [ $a -lt 100 -o $b -gt 100 ]
   echo "$a -lt 100 -o $b -gt 100 : returns true" 

关系运算符只支持数字,不支持字符串,除非字符串的值是数字

#!/bin/bash 
#关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
b=20   #若写 a="a";b="b"; 下面的比较会出现报错 
if [ $a -eq $b ] #-eq:equal
   echo "$a -eq $b : a is equal to b"
   echo "$a -eq $b: a is not equal to b"
if [ $a -ne $b ] #-ne:not equal
   echo "$a -ne $b: a is not equal to b" 
if [ $a -gt $b ] #-gt:greater than
   echo "$a -gt $b: a is greater than b"
   echo "$a -gt $b: a is not greater than b"
if [ $a -lt $b ] #-lt:less than
   echo "$a -lt $b: a is less than b" 
if [ $a -ge $b ] #-ge:greater or equal
   echo "$a -ge $b: a is greater or  equal to b"
   echo "$a -ge $b: a is not greater or equal to b"
if [ $a -le $b ] #-le:less or equal
   echo "$a -le $b: a is less or  equal to b" 
#另一种比较方法:用(())
echo "-----------------------------------"
if ((a >= b));then echo 1 ;fi
if ((a <= b));then echo 2;fi
if ((a == b));then echo 3;fi;
if !((a != b));then echo 4;fi;
if !((a > b));then  echo 5;fi
if !((a < b));then  echo 6;fi
#输出 1 2 3 4 5 6

字符串运算

#!/bin/bash
a="abc"
b="abcd"
if [ $a = $b ]  #<==>if [ $a == $b ] 
    echo "$a = $b : a is equal to b"
    echo "$a = $b : a is not equal to b"
if [ $a != $b ]
    echo "$a = $b : a is not equal to b" 
if [ -z $a ] #-z:zero
    echo "-z $a : string length is zero"
    echo "-z $a : string length is not zero"
if [ -n $a ] #-n:not
    echo "-n $a : string length is not zero" 
if [ $a ]
    echo "$a : string  is not empty"
    echo "$a : string  is empty"
 
  • =检测两个字符串是否相等,相等返回 true。 
  • !=检测两个字符串是否相等,不相等返回 true。 
  • -z检测字符串长度是否为0,为0返回 true。 
  • -n检测字符串长度是否为0,不为0返回 true。 
  • str检测字符串是否为空,不为空返回 true。

文件测试运算

#!/bin/bash
#文件测试运算符用于检测 Unix 文件的各种属性。
#例如,变量 file 表示文件“/home/CentOS/script/var.sh”,它的大小为253字节,具有 rwx 权限。
file="/home/CentOS/script/var.sh"
if [ -r $file ] #-r:read
    echo "File has read access"
if [ -w $file ] #-w:write
    echo "File has write permission"
if [ -x $file ] #-x:execute
    echo "File has execute permission"
if [ -f $file ] #-f:file
    echo "File is an ordinary file"
if [ ! -d $file ] #-d:directory
    echo "File is not a directory"
if [ -s $file ] #-s:size
    echo "File size is not zero"    
if [ -e $file ] #-e:exists
    echo "File exists"
 
  • -b file检测文件是否是块设备文件,如果是,则返回 true。 
  • -c file检测文件是否是字符设备文件,如果是,则返回 true。 
  • -d file检测文件是否是目录,如果是,则返回 true。 
  • -f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 
  • -g file检测文件是否设置了 SGID 位,如果是,则返回 true。 
  • -k file检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 
  • -p file检测文件是否是具名管道,如果是,则返回 true。 
  • -u file检测文件是否设置了 SUID 位,如果是,则返回 true。 
  • -r file检测文件是否可读,如果是,则返回 true。 
  • -w file检测文件是否可写,如果是,则返回 true。 
  • -x file检测文件是否可执行,如果是,则返回 true。 
  • -s file检测文件是否为空(文件大小是否大于0),不为空返回 true。 
  • -e file检测文件(包括目录)是否存在,如果是,则返回 true。
算术运算首先这里所说的算术运算是指加法(+), 减法(-),乘法(*),整除(/), 求余(%)四种运算,可以通过添加括号改变优先级,并且只能对整数进行运算(Linux Bash Shell默认不支持浮点数运算)#!/bin/bashval=`expr 2 + 2` #expr 参数要为整数echo "Total value : $val"a=10b=-5c=`expr $a
三剑客过滤长字符串 记一次过滤文件内容,三剑客awk、grep、sed过滤指定字段、列后,怎料其中混杂编码字符串,这不是我们想要的。所幸,找到了规律,那就是 它 很长…,直接干掉长字符串即可! 下边是三把剑具体实现! 我有三把剑,一把awk,一把grep,一把sed [root@centos]# cat test hello helloword test66 且看,统计字符串长度,用到招式 length() 函数 [root@centos]# echo hello | awk '{print length($1)}' 如看官所愿,得到字符串的长度 5 连招,加 if
echo ((((((num1+$num2)) echo $((num1+num2)) echo KaTeX parse error: Undefined control sequence: \* at position 4: ((2\̲*̲5-3)) 在shell脚本中,所有的变量默认都是字符串存储,操作也是按照字符串进行处理的,但我们不可避免的需要对各中数值进行算术运算,如算术的相加减,那么这时怎么处理呢? 在shell脚本中,我们要实现对数值的算术运行,就要用到一下三种命令方式: 1、let 命令 2、(())命令 3、expr 表达式 let命令 let命令类似于c语言中的算术运行,直接进行数值相加减即可,如: num1=90 num2=80 CSDN-Ada助手: 非常感谢CSDN博主的分享,这篇博客详细介绍了CocosCreator中的AssetManager之管线,让我了解了更多有关游戏资源管理的知识。我觉得对其他用户来说,了解这个方面的知识非常重要,因此我建议你可以继续写一篇关于CocosCreator中的资源加载优化的技术文章,分享你更深入的研究和实践经验,相信会吸引更多的读者前来阅读。 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 [数据结构]四种数据存储结构---顺序存储 链接存储 索引存储 散列存储 索引存储的典型事例是什莫呢 [iOS]iOS中使用URLScheme进行App跳转 q进击的涛涛: 请问上位机就是通过这个url scheme打开自己的应用的麽?如果是那它的格式是什么?这个应该要符合ios的 [Lua基础]包package——模块开发 阮小白一点零: 多谢,受教了 [网络编程]Win32 Socket+OpenSSL实例 樱公馆的女仆: 感谢博主分项