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

更新:正如建议的那样,我在函数调用之外的其余代码中进行了几次尝试,我发现了问题。

我的变量声明实际上是这样缩进的:

JOB_NUM=            4
THREAD_NUM=         8
.....
VERY_LONG_VAR_NAME= 3

显然,这影响了评估。呸!它以前一直对我有用,那么为什么现在不呢?

如果我删除空格,评估有效:

JOB_NUM=4
THREAD_NUM=8
....
VERY_LONG_VAR_NAME=3

好吧,我正式讨厌bash。 。叹了口气:(

这将正常工作

#!/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中写:

设置 -u

如果变量设置不正确,这将生成类似"JOB_NUM:未绑定变量"的消息

相关内容

  • 没有找到相关文章

最新更新