【发布时间】:2014-05-07 13:39:56
【问题描述】:
我有一个脚本:
ENABLE_SYSLOG=true
test -r /etc/default/inotifywait && . /etc/default/inotifywait || exit 99
test -d $INOTIFY_FOLDER || exit 100
inotifywait -mrq -e ATTRIB --format '%w%f' "$INOTIFY_FOLDER" | while IFS= read -r FILE
do
if [ -f $FILE ];then
# If file
if [ `stat -c %a $FILE` != "664" ] ;then
CHMOD_LOG=$(chmod -v 664 "$FILE")
[[ "$ENABLE_SYSLOG" = true ]] && logger -t inotifywait -p user.info "$CHMOD_LOG" &
fi
else
# If directory
if [ `stat -c %a $FILE` != "2775" ] ;then
CHMOD_LOG=$(chmod -v 2775 "$FILE")
[[ "$ENABLE_SYSLOG" = true ]] && logger -t inotifywait -p user.info "$CHMOD_LOG" &
fi
fi
done
为什么我的情况
[[ "$ENABLE_SYSLOG" = true ]] && logger -t inotifywait -p user.info "$CHMOD_LOG"
不工作?
如果我删除
[[ "$ENABLE_SYSLOG" = true ]] &&
然后一切都很好。
我尝试删除与号 (&),尝试其他条件(如您在示例中看到的),尝试 if 而不是 [[ - 但一切都是徒劳的。
任何条件都不行
【问题讨论】:
-
你可以说:
"$ENABLE_SYSLOG" && ... -
哦,谢谢。这太棒了
-
虽然这看起来很聪明,但它可能不是一个好主意。您应该尝试找出为什么您的尝试不起作用,因为它应该。您使用的是哪个版本的
bash?你如何运行脚本? -
这行得通。谢谢你的提示)
-
Ubuntu 确实使用
dash,而不是bash,用于系统脚本,因此不支持[[。
标签: upstart dash-shell