现代 shell(在我看来,POSIX 兼容 = 现代)支持算术运算:+ - / * 在有符号长整型变量 +/- 2147483647 上。
使用 awk 进行双精度、15 位有效数字它也可以执行 sqrt。
使用 bc -l 将精度扩展至最多 20 位有效数字。
您已经看到的 shell 语法 (zed_0xff):
a=$(( 13 * 2 ))
a=$(( $2 / 2 ))
b=$(( $a - 1 ))
a=(( $a + $b ))
Run Code Online (Sandbox Code Playgroud)
awk 本身执行双精度浮点算术运算。它还具有 sqrt、cos、sin .... 请参阅:
http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html
bc 有一些定义的函数和扩展精度,可通过 -l 选项使用:
BC-L
例子:
echo 'sqrt(.977)' | bc -l
Run Code Online (Sandbox Code Playgroud)
如果您使用 ksh,您是否尝试过阅读“man ksh”?
例如,“man bash”有足够的关于使用 bash 进行算术的信息。
命令 typeset -i 可用于指定变量必须被视为整数,例如 typeset -i MYVAR 指定变量 MYVAR 是整数而不是字符串。在 typeset 命令之后,尝试将非整数值分配给变量将失败:
$ typeset -i MYVAR
$ MYVAR=56
$ echo $MYVAR
56
$ MYVAR=fred
ksh: fred: bad number
$
Run Code Online (Sandbox Code Playgroud)
要对变量或 shell 脚本内执行算术运算,请使用 let 命令。let 将其参数计算为简单的算术表达式。例如:
$ let ans=$MYVAR+45
echo $ans
101
$
Run Code Online (Sandbox Code Playgroud)
上面的表达式也可以写成如下:
$ echo $(($MYVAR+45))
101
$
Run Code Online (Sandbox Code Playgroud)
$(( 和 )) 中包含的任何内容都被 Korn shell 解释为算术表达式