执行相等测试时,请使用
我制作了一个暴发户脚本,完全打破了我的期望。
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/sh
是dash
,而不是bash
。