尝试生成减少角度的bash函数时出现语法错误

时间:2014-05-01 06:11:50

标签: bash

我是一个写作我的第一个功能的bash noob。 angle_reduce位于一个名为bashcalc-functions.sh的文件中。我希望angle_reduce以一个角度(以弧度表示)并输出该角度减小到[0,2pi]。据我了解,bash中的%执行余数操作而不是模运算,因此我在if语句中添加了对此进行说明。

function angle_reduce {
        twopi=$(echo "8*a(1)" | bc -l)
        x=$(echo "$1%$twopi" | bc)
        if ["$x" -lt 0]
        then
                x=$(echo "$x+$twopi" | bc -l)
        fi
        echo "$x"
}

然后我这样运行:

~/bash_practice # . bashcalc-functions.sh
~/bash_practice # angle_reduce "-10"
-bash: [-3.71681469282041352312: command not found
-3.71681469282041352312

我不知道这个语法错误来自哪里。此外,看起来if语句中的行根本没有执行,因为输出仍然是负数。

2 个答案:

答案 0 :(得分:0)

如果小于0,则它将以-开头,所以请使用

if [ ${x::1} = - ]

答案 1 :(得分:0)

bash' s []不支持浮点运算。所以您可以使用bc代替

某些bc实现可以执行以下操作(也许是GNU bc?)。

if [ $(bc <<< "$x < 0") = "1" ]; then

以下仅使用bc标准,因此可以在任何bc

中使用
if [ "$(bc <<< "if($x < 0){1}")" = "1" ]; then

然而,对于这种情况,史蒂文的回答似乎很简单。