Bash脚本,检查范围内的数值变量

时间:2015-04-14 12:25:52

标签: bash

这是我的剧本:

#!/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 ]]; ......仍然没有成功。

2 个答案:

答案 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;如果变量没有很好地设置