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))之间有什么区别?
let有同样的情况:
解决方法
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中很重要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |