加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 我应该使用$(())来计算ksh中的算术表达式吗?

发布时间:2020-12-15 21:41:13 所属栏目:安全 来源:网络整理
导读:1)如果我操作整数,我应该使用$(())吗? typeset -i x=0typeset -i y=0typeset -i z=0y=$(($x+1))print $y1z=$x+1print $z1 如您所见,z和y都有正确的结果. 仅在变量未声明为整数的情况下才有区别: typeset jtypeset kj=$(($x+1))print $j1k=$x+1print $k0+1
1)如果我操作整数,我应该使用$(())吗?

>typeset -i x=0
>typeset -i y=0
>typeset -i z=0
>y=$(($x+1))
>print $y
1
>z=$x+1
>print $z
1

如您所见,z和y都有正确的结果.
仅在变量未声明为整数的情况下才有区别:

>typeset j
>typeset k
>j=$(($x+1))
>print $j
1
>k=$x+1
>print $k
0+1

2)$(($x 1))和$((x 1))之间有什么区别?

print $(($x+1))
1
print $((x+1))
1

let有同样的情况:

x=1
let x=$x+1
print $x
2
let x=x+1
print $x
3

解决方法

2)在$((..))中使用$x扩展,您可以在文本上构造表达式:

NUM1=3
NUM2=5
NUM3=7
for OP1 in + - * /; do
  for OP2 in + - * /; do
    echo $((NUM1 $OP1 NUM2 $OP2 NUM3));
  done
done

显然它不适用于$((NUM1 OP1 NUM2))等.

另一种可能性(没有$)可用于修改变量:

X=0
Y=1
echo $((Y << (++X))) # prints 2,which is 1 << 1; increments X
echo $X # prints 1

对于1),我使用$((..)),因为它是POSIX,但是,我不认为它在ksh中很重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读