Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何正确格式化这个bash-if语句?_Linux_Bash_Shell_If Statement - Fatal编程技术网

Linux 如何正确格式化这个bash-if语句?

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

我对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与COMPARE2不匹配,我希望它执行一个命令。如果相等,什么也不做

目前,COMPARE和COMPARE2不匹配,但它仍然执行echo“服务器未响应”

我做错了什么?谢谢

!=表示“不相等”,因此代码的意思是:

若Compare不等于Compare2,则回显“服务器无响应,正在终止进程…”


你需要改变to=检查是否相等。!=检查不平等性。

您有一个!=在if条件下,执行echo-echo是正确的啊,这是有道理的。但现在它给了我一个“意外的运算符”错误。@user3273395您正在尝试
=
=
对于单括号测试不是有效的运算符,但您可以切换到
[[]]
(由于附加功能,对于大多数纯bash情况,这是首选),它应该可以工作。您如何编写它?我试过if[“$COMPARE”!=“$COMPARE2”]]和if[“$COMPARE”!=“$COMPARE2”]]但都不起作用。另外,它是一个shell脚本,我不认为它是纯bash。抱歉,我应该澄清。
=
不是正确的运算符,您需要使用bash的内置
[]
util使用
=
使两个字符串相等。