字符、运算、逻辑运算

字符

数值

        整型

        浮点型:

11.23, 1.123*10^1, 0.1123*10^2

                2013/10/10, 64bit

99999: 24bit,

        布尔型

:真、假

逻辑:1+1>2

shell算术运算:

Shell默认不作算数运算

例如:

[root@localhost ~]# A=5

[root@localhost ~]# B=6

[root@localhost ~]# C=$A+$B

[root@localhost ~]# echo $C

5+6

如果要做:

1、let 算术运算表达式

let C=$A+$B

例如:

[root@localhost ~]# A=5

[root@localhost ~]# B=6

[root@localhost ~]# let C=$A+$B

[root@localhost ~]# echo $C

11

例如:

let I=$[$I+1]相当于let I+=1

SUM=$[$SUM+$I]相当于 let SUM+=$I

a=$[$a+1] 相当于 let a+=1

let I+=1 相当于 let I++

-=:let I-=1 相当于 let I–

++I, –I

*=

/=

%=

2、$[算术运算表达式]

C=$[$A+$B]

例如:

[root@localhost ~]# A=5

[root@localhost ~]# B=6

[root@localhost ~]# C=$[$A+$B]

[root@localhost ~]# echo $C

11

3、$((算术运算表达式))

C=$(($A+$B))

例如:

[root@localhost ~]# A=5

[root@localhost ~]# B=6

[root@localhost ~]# C=$(($A+$B))

[root@localhost ~]# echo $C

11

4、expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用

C=`expr $A + $B`

例如:

[root@localhost ~]# A=5

[root@localhost ~]# B=6

[root@localhost ~]# C=`expr $A + $B`

[root@localhost ~]# echo $C

11

    注意:中间空格

[root@localhost ~]# C=`expr $A+$B`

[root@localhost ~]# echo $C

5+6

例如:

[root@linux ~]# C=`expr $A + $B`

[root@linux ~]# C=`expr $A – $B`

[root@linux ~]# C=`expr $A \* $B`

[root@linux ~]# C=`expr $A \/ $B`

逻辑运算:

与、或、非、异或

1: 真

0: 假

与:

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0

1 & 1 = 1

或:

1 | 1 = 1

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0

非:

! 真 = 假

! 假 = 真

异或:

操作数相同为真,不同为假。

shell: 弱类型编程语言

强:变量在使用前,必须事先声明,甚至还需要初始化;

弱:变量用时声明,甚至不区分类型;

变量赋值:VAR_NAME=VALUE

命令的间逻辑关系:

逻辑与: &&

第一个条件为假时,第二条件不用再判断,最终结果已经有;

第一个条件为真时,第二条件必须得判断;

逻辑或: ||

第一个条件为真时,第二个条件不用判断,最终结果已经为真了;

第一个条件为假时,第二个条件必须得判断;

例如:

[root@localhost ~]# A=5

[root@localhost ~]# B=6

[root@localhost ~]# [ “$A” == “$B” ] && echo “00000000”; :

[root@localhost ~]# [ “$A” == “$B” ] && echo “00000000”

[root@localhost ~]# [ “$A” == “$B” ] || echo “00000000”

00000000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要确定输入的字符串的格式和逻辑运算的定义。假设输入的字符串只包含逻辑运算符(如“AND”、“OR”、“NOT”)和括号,并且只有两种值(如“TRUE”和“FALSE”),那么可以考虑使用递归方法将字符串转换为逻辑表达式。 下面是一个可能的实现: ```scala sealed trait LogicExpr case object True extends LogicExpr case object False extends LogicExpr case class And(left: LogicExpr, right: LogicExpr) extends LogicExpr case class Or(left: LogicExpr, right: LogicExpr) extends LogicExpr case class Not(expr: LogicExpr) extends LogicExpr object LogicExprParser { def parse(expr: String): LogicExpr = { val trimmed = expr.trim if (trimmed == "TRUE") { True } else if (trimmed == "FALSE") { False } else if (trimmed.startsWith("NOT")) { Not(parse(trimmed.substring(3).trim)) } else { var parenCount = 0 var i = 0 while (i < trimmed.length) { val c = trimmed.charAt(i) if (c == '(') { parenCount += 1 } else if (c == ')') { parenCount -= 1 } else if (parenCount == 0) { if (trimmed.startsWith("AND", i)) { return And(parse(trimmed.substring(0, i).trim), parse(trimmed.substring(i + 3).trim)) } else if (trimmed.startsWith("OR", i)) { return Or(parse(trimmed.substring(0, i).trim), parse(trimmed.substring(i + 2).trim)) } } i += 1 } throw new IllegalArgumentException("Invalid expression: " + expr) } } } ``` 使用方法如下: ```scala val expr = LogicExprParser.parse("NOT (TRUE AND FALSE) OR (TRUE AND NOT FALSE)") ``` 该方法将返回一个逻辑表达式,表示输入字符串对应的逻辑运算。可以通过递归遍历该表达式来计算结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值