【发布时间】:2014-03-16 18:54:01
【问题描述】:
您好,我正在尝试编写一个程序,如果感兴趣的人在给定时间上线,它将提醒用户。到目前为止,我的程序是
#!/usr/bin/ksh
message=""
when=""
validFiles=""
validUsers=""
if [ $# -gt 0 ] ; then
while getopts w:m: opt
do
case $opt in
w) when=$OPTARG;;
m) message=$OPTARG;;
\?) echo $USAGE exit 2;;
esac
done
shift $(($OPTIND - 1))
if [[ $# -gt 0 ]] ; then
for i; do
if [[ -f "$i" && -r "$i" ]]; then
if ! echo $validFiles | grep $i >/dev/null; then
validFiles="$validFiles $i"
fi
elif id $i 2> /dev/null 1>&2; then
if ! echo $validUsers | grep $i > /dev/null; then
validUsers="$validUsers $i"
fi
fi
done
if [[ $when != "" && $validFiles != "" || $validUsers != "" ]] ;then
for i in $validUsers; do
if ! grep $i $validFiles >/dev/null; then
at $when <<"END"
if finger $i | grep $i; then
echo "$i is online" | elm $message
fi
END
fi
done
fi
else
echo "No files or usernames"
fi
else
echo "No arguments provided"
fi
我的问题是,当我尝试运行它时,我收到了错误消息
syntax error at line 33 : `<<' unmatched
我不确定为什么会出现这种情况。我检查了许多其他示例,并且我的 at 命令(此处为文档)似乎与他们的相同。有人可以帮帮我吗?谢谢。
【问题讨论】: