KSH 语法错误:无效的算术运算符(错误标记为“.111111111 -2.55555”)

KSH 语法错误:无效的算术运算符(错误标记为“.111111111 -2.55555”)

我有以下例子,但我不知道为什么。

 line 48: 15.111111111 -2.55555: syntax error: invalid arithmetic operator (error token is ".111111111 -2.55555")

这是我在 ksh 中的源代码:

export a=2.55555
export b=15.111111111
export c=$(( $b -$a))
echo $c

有人有什么想法吗?

答案1

您的代码有效在 ksh 中(尽管变量不是必需的export,除非你计划在子环境中使用它们)。例如,给定

$ cat myscript.ksh
#!/usr/bin/env ksh

export a=2.55555
export b=15.111111111
export c=$(( $b -$a))
echo $c

然后

chmod +x myscript.ksh

$ ./myscript.ksh
12.555561111

然而大多数其他常见的 shell 不支持非整数运算-根据错误消息,您实际上正在使用以下命令执行代码bash

$ bash ./myscript.ksh
./myscript.ksh: line 5: 15.111111111 -2.55555: syntax error: invalid arithmetic operator (error token is ".111111111 -2.55555")

答案2

ksh 具有浮点支持,因此没有使用 ksh?

Bash中不包含小数$(( ... ))
即不能使用浮点数。

man bash可以通过输入以下内容 查找手册中的相关部分:/^ARITH ENTER

您将会看到:
“评估是在固定宽度的整数没有检查溢出,但除以 0 会被捕获并标记为错误。”


正如@Terrance 在上面的评论中所说:
export c=$(echo "$b - $a | bc)应该有效。

相关内容