首页 > 解决方案 > korn shell 数组中的负值问题

问题描述

当我尝试创建一个包含负值的数组时,它会引发以下错误。

#!/usr/bin/ksh

set -A sre_act_val -0.1429999999999998 0.44700000000000006

echo "${sre_act_val[1]}"
echo "${sre_act_val[0]}"

错误:

set: -0: unknown option
set: -.: unknown option
set: -1: unknown option
set: -4: unknown option

标签: shellksh

解决方案


问题是 ksh 将以破折号开头的任何内容解释为选项(至少对于set),因此它读取-0.143为一系列选项:0.143

为了解决这个问题,您可以--在任何数组元素之前使用来告诉 ksh 停止解释参数。这记录在manksh 的页面中,在set内置的部分中。

set -A sre_act_val -- -0.1429999999999998 0.44700000000000006
echo "${sre_act_val[@]}" # output: -0.1429999999999998 0.44700000000000006

推荐阅读