bash中的减法不起作用

时间:2017-08-25 12:43:20

标签: bash

我对bash脚本有以下问题:

validParameters=0
argumentLength=${#1}
argumentLength==$((argumentLength - 1))

#[code to increment validParameters]

if [[ $validParameters != argumentLength ]]
    then
        diff=$((argumentLength - validParameters))
        printf "Attention:\n$diff invalid argument(s) found!\n"
fi
    exit 1

错误发生在以下行中:diff=$((argumentLength - validParameters))

=3: syntax error: operand expected (error token is "=3")

使用命令script.sh abc

如果我将diff设置为固定值(例如diff=1)而不是减法,则脚本可以正常工作。

我的减法语法是不是错了?

2 个答案:

答案 0 :(得分:2)

argumentLength==$((argumentLength - 1))

你这里有两个=。它相当于:

argumentLength="=$((argumentLength - 1))"

这就是错误消息显示=3

的原因

答案 1 :(得分:0)

其中一个变量argumentLengthvalidParameters 存储了一个数字,但其中包含字符串=3

对于调试,尝试在减去变量之前打印它们。

顺便说一下,你可以写((diff = argumentLength - validParameters))

修改后编辑:发现错误

中有一个=太多了
argumentLength==$((argumentLength - 1))

argumentLength=$((argumentLength - 1))

(( argumentLength-- ))

代替。