#!/usr/dt/bin/dtksh
while getopts w:m: option
do
case $option in
w) wflag=1
wval="$OPTARG";;
m) mflag=1
mval="$OPTARG";;
?) printf 'BAD\n' $0
exit 2;;
esac
done
if [ ! -z "$wflag" ]; then
printf "W and -w arg is $wval\n"
fi
if [ ! -z "$mflag" ]; then
printf "M and -m arg is $mval\n"
fi
shift $(($OPTIND - 1))
printf "Remaining arguments are: $* \n"
at $wval <<ENDMARKER
echo $* >> Search_List
tr " " "\n" <Search_List >Usr_List
while true; do
if [ -s Usr_List ]; then
for i in $(cat Usr_List); do
if finger -m | grep $i; then
echo '$i is online' | elm user
sed '/$i/d' <Usr_List >tmplist
mv tmplist Usr_List
fi
done
else
break
fi
done
ENDMARKER
本质上我想继续搜索直到它是空的。每次找到列表中的元素时,都会将其删除。一旦列表为空退出。
我第一次运行命令时没有错误消息,它只显示在包含 at 作业输出的电子邮件中。
提前感谢您的任何建议
编辑:该脚本使用 getopts 并为 -w 采用一个参数,为 -m 采用一个参数,w 值设置为 at 作业的时间,仍然必须使用 m。m 之后的任何参数都被发送到名为 Search_List 的文件中,Search_List 被编辑并保存为 Usr_List。然后在while 循环中,当Usr_List 不为空时,脚本会根据Usr_List 中的名称检查finger -m 的结果。如果找到名称,则将其从 Usr_List 中删除。一旦 Usr_List 为空,程序应该停止。
elm 是一种发送电子邮件的方式,因此 elm 用户向用户发送电子邮件。
错误是:
while:表达式语法