bash脚本中的字符串比较

时间:2014-10-16 20:00:55

标签: bash nagios

这个让我挠头。我有一个bash脚本我试图作为一个nagios插件运行。

从命令行一切都很好但是在nagios下运行时会采取错误的执行路径。在这种情况下,nagios服务器是我的本地盒子。

这是脚本中出现问题的地方。它有点简化但不多。样品:

# at the start of the script
threshold_type="above"

# then later on..

check_thresholds() {
    if [ "$threshold_type" == "above" ]; then
        method_1
    else
        method_2
    fi
}

调用check_thresholds时,method_2会在nagios下运行。从命令行运行(相同的参数,我发誓)method_1被调用。可能会发生什么想法?我应该以不同方式检查字符串比较吗?

[编辑]我愚蠢地忽略了提到命令行是从Mac OSX运行的,而nagios服务器是盒子上的Ubuntu VM。

1 个答案:

答案 0 :(得分:2)

if [ "$threshold_type" == "above" ]

[ / test==的混合,是bash扩展名。其他shell不支持==。要使此脚本更具可移植性,您应该使用:

if [ "$threshold_type" = "above" ]

Bash在==[构造中支持[[,但=是符合POSIX(正确)的方式进行比较。