这是我的剧本:
#!/bin/bash
JOB_NUM=4
function checkJobNumber() {
if (( $JOB_NUM < 1 || $JOB_NUM > 16 )); then
echo "pass"
fi
}
...
checkJobNumber
...
当我尝试启动脚本时,我收到消息:
./script.sh line 49: ((: < 1 || > 16 : syntax error: operand expected (error token is "< 1 || > 16 ")
(请注意错误消息中的空格)
我真的不明白问题所在。如果我在命令行手动进行评估,它就可以工作。
另外,我尝试了不同的评估,例如if [[ "$JOB_NUM" -lt 1 -o "$JOB_NUM" gt 16 ]];
......仍然没有成功。
答案 0 :(得分:0)
UPDATE :正如建议的那样,我在函数调用之外的其余代码中再做了一些尝试,我发现了问题。
我的变量声明实际上是以这种方式缩进的:
JOB_NUM= 4
THREAD_NUM= 8
.....
VERY_LONG_VAR_NAME= 3
显然这会使得这种情况变得糟透了。呸!它以前总是对我有用,为什么现在不呢?
如果删除空格,评估将起作用:
JOB_NUM=4
THREAD_NUM=8
....
VERY_LONG_VAR_NAME=3
好的,我正式讨厌bash
。 。 。感叹:(
答案 1 :(得分:0)
这样可以正常使用
#!/bin/bash
JOB_NUM=7
function checkJobNumber() {
if [ $JOB_NUM -lt 0 ] || [ $JOB_NUM -gt 16 ] ; then
echo "true"
else
echo "false"
fi
}
checkJobNumber
如果你想在测试期间检查变量,你可以用你的bash写一下:
set -u
这将生成一条消息,例如&#34; JOB_NUM:未绑定的变量&#34;如果变量没有很好地设置