我对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
)而不是减法,则脚本可以正常工作。
我的减法语法是不是错了?
答案 0 :(得分:2)
argumentLength==$((argumentLength - 1))
你这里有两个=
。它相当于:
argumentLength="=$((argumentLength - 1))"
这就是错误消息显示=3
。
答案 1 :(得分:0)
其中一个变量argumentLength
和validParameters
不存储了一个数字,但其中包含字符串=3
。
对于调试,尝试在减去变量之前打印它们。
顺便说一下,你可以写((diff = argumentLength - validParameters))
。
修改后编辑:发现错误
=
太多了
argumentLength==$((argumentLength - 1))
写
argumentLength=$((argumentLength - 1))
或
(( argumentLength-- ))
代替。