我为我的shell脚本使用了正确的语法吗?

时间:2018-11-05 15:48:14

标签: linux bash shell

我编写了一个Shell脚本,该脚本从文件中获取一个值,并基于该值我想回显特定的消息。我的控制台一直在说第7行和第9行有错误。关于如何解决它的任何建议将不胜感激。

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home'
echo $JAVA_HOME
export CLASSPATH='/Users/edgarjohnson/Desktop/JarFiles/mlDownload.jar:/ddc/config'
echo $CLASSPATH
var=$(cat /ddc/config/LastRefreshDate.dat)
echo $var
if [$var > 0 ];then
        echo "Run Get Latest Update Class"
elif [$var = 0]; then
        echo "No need to run any updates"
fi

1 个答案:

答案 0 :(得分:1)

[之后和]之前必须有一个空格。否则,将替换该变量,并且外壳程序将尝试执行名为[Whatever的程序。

[本身实际上只是一个二进制文件,它以var的内容,=0]作为参数及其返回码执行用于确定应采用if还是else分支。

但是,所使用的运算符实际上并不是您打算使用的运算符,例如>被解释为shell重定向,它创建了一个名为0的文件(或覆盖了该文件),实际上并没有进行任何比较,请改用-gt=检查字符串相等性,-eq检查值相等。

如评论中所述,最好使用[[ ]]而不是[ ]