我编写了一个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
答案 0 :(得分:1)
在[
之后和]
之前必须有一个空格。否则,将替换该变量,并且外壳程序将尝试执行名为[Whatever
的程序。
[
本身实际上只是一个二进制文件,它以var
的内容,=
,0
和]
作为参数及其返回码执行用于确定应采用if
还是else
分支。
但是,所使用的运算符实际上并不是您打算使用的运算符,例如>
被解释为shell重定向,它创建了一个名为0
的文件(或覆盖了该文件),实际上并没有进行任何比较,请改用-gt
。 =
检查字符串相等性,-eq
检查值相等。
如评论中所述,最好使用[[ ]]
而不是[ ]
。