Linux 如何正确格式化这个bash-if语句?
我对bash比较陌生,我正在尝试这样做:Linux 如何正确格式化这个bash-if语句?,linux,bash,shell,if-statement,Linux,Bash,Shell,If Statement,我对bash比较陌生,我正在尝试这样做: COMPARE2=$(tail -n 1 $LOGFILE) echo "$COMPARE2" if [ "$COMPARE" != "$COMPARE2" ] then echo "Server not responding, killing process..." # kill $(ps aux | grep 'craftbukkit.jar' | awk '{print $2}') fi 本质上,如果COMPARE与COMPARE
COMPARE2=$(tail -n 1 $LOGFILE)
echo "$COMPARE2"
if [ "$COMPARE" != "$COMPARE2" ]
then
echo "Server not responding, killing process..."
# kill $(ps aux | grep 'craftbukkit.jar' | awk '{print $2}')
fi
本质上,如果COMPARE与COMPARE2不匹配,我希望它执行一个命令。如果相等,什么也不做
目前,COMPARE和COMPARE2不匹配,但它仍然执行echo“服务器未响应”
我做错了什么?谢谢 !=表示“不相等”,因此代码的意思是:
若Compare不等于Compare2,则回显“服务器无响应,正在终止进程…”
你需要改变to=检查是否相等。!=检查不平等性。您有一个!=在if条件下,执行echo-echo是正确的啊,这是有道理的。但现在它给了我一个“意外的运算符”错误。@user3273395您正在尝试
=
=
对于单括号测试不是有效的运算符,但您可以切换到[[]]
(由于附加功能,对于大多数纯bash情况,这是首选),它应该可以工作。您如何编写它?我试过if[“$COMPARE”!=“$COMPARE2”]]和if[“$COMPARE”!=“$COMPARE2”]]但都不起作用。另外,它是一个shell脚本,我不认为它是纯bash。抱歉,我应该澄清。=
不是正确的运算符,您需要使用bash的内置[]
util使用=
使两个字符串相等。