任何人都可以说出这个脚本有什么问题吗?因为我收到了像
这样的错误./timer: line 9: [13: command not found
./timer: line 12: [13: command not found
我的脚本看起来像
#!/bin/bash
while :
do
HOUR=$(date +%H)
MINUTE=$(date +%M)
SECOND=$(date +%S)
if [$HOUR == 13] && [$MINUTE == 12] && [$SECOND == 1]
then ./binary
elif [$HOUR == 18] && [$MINUTE == 30] && [$SECOND == 1]
then ./binary
fi
done
答案 0 :(得分:2)
在[...]之间留一个空格 例如:
if [$HOUR == 13] && [$MINUTE == 12] && [$SECOND == 1]
应该成为
if [ $HOUR == 13 ] && [ $MINUTE == 12 ] && [ $SECOND == 1 ]
答案 1 :(得分:1)
我认为你必须使用"${VARIABLE}"
并尊重方括号的空格
这会给:
if [ "${HOUR}" == 13 ] && [ "${HOUR}" == 12 ] && [ "${HOUR}" == 1 ]
希望有所帮助!
答案 2 :(得分:1)
bash中的测试运算符需要通过开括号和右括号来填充空格,请尝试
[ $HOUR == 13 ] && [ $MINUTE == 12 ] && [ $SECOND == 1 ]
和
[ $HOUR == 18 ] && [ $MINUTE == 30 ] && [ $SECOND == 1 ]
这是一个您可能会觉得有用的链接 http://tldp.org/LDP/abs/html/testconstructs.html
答案 3 :(得分:1)
有几件事:
[
之后和]
之前添加空格。-eq
运算符来比较数值(请参阅Bash conditional operators)。像这样:
if [ "$HOUR" -eq 13] && [ "$MINUTE" -eq 12 ] && [ "$SECOND" -eq 1 ]
elif [ "$HOUR" -eq 18 ] && [ "$MINUTE" -eq 30 ] && [ "$SECOND" -eq 1 ]