gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:58:36 25 4
gpt4 key购买 nike

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 中并不重要。

关于unix - 我应该使用 $(( )) 来计算 ksh 中的算术表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com