Upstart If语句执行不正常



我制作了一个暴发户脚本,完全打破了我的期望。

stubid-test.conf

script
  VALUE="PONG"
  echo "START" >> /var/log/stupid-test.log
  if [ "$VALUE" == "PONG" ]; then
    echo "GOOD PONG" >> /var/log/stupid-test.log
  fi
  if [ "$VALUE" != "PONG" ]; then
    echo "BAD PONG" >> /var/log/stupid-test.log
  fi
  if [ "$VALUE" == "PING" ]; then
    echo "BAD PING" >> /var/log/stupid-test.log
  fi
  if [ "$VALUE" != "PING" ]; then
    echo "GOOD PING" >> /var/log/stupid-test.log
  fi
  echo >> /var/log/stupid-test.log
end script

stubid-test.log

START
GOOD PING

当然,如果你在bash中执行完全相同的命令,它会完美地工作:

START
GOOD PONG
GOOD PING

这似乎适用于可以放入VALUE中的任何内容——我尝试过整数和字符串。

执行相等测试时,请使用=而不是====是bash扩展,在运行upstart的shell中不可用。Upstart使用/bin/sh -e运行所有脚本。在Ubuntu系统中,/bin/shdash,而不是bash

最新更新