Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我总是得到一个';而语法';unix中at作业的输出出错,我不知道原因 #/usr/dt/bin/dtksh 而getopts w:m:option 做 案例中的$option w) wflag=1 wval=“$OPTARG”;; m) mflag=1 mval=“$OPTARG”;; ?)printf'BAD\n'$0 出口2;; 以撒 完成 如果[!-z“$wflag”];然后 printf“W和-W参数为$wval\n” fi 如果[!-z“$mflag”];然后 printf“M和-M参数为$mval\n” fi 班次$($OPTIND-1)) printf“其余参数为:$*\n” 在$wval搜索列表中 tr“”“\n”Usr\U列表 虽然真实;做 如果[-s Usr_列表];然后 以美元为单位的i(cat Usr_列表);做 如果finger-m | grep$i;然后 echo“$i在线”| elm用户 sed'/$i/d'tmplist mv tmplist Usr\U列表 fi 完成 其他的 打破 fi 完成 终点标记_Linux_Unix_Loops_While Loop_Ksh - Fatal编程技术网

Linux 我总是得到一个';而语法';unix中at作业的输出出错,我不知道原因 #/usr/dt/bin/dtksh 而getopts w:m:option 做 案例中的$option w) wflag=1 wval=“$OPTARG”;; m) mflag=1 mval=“$OPTARG”;; ?)printf'BAD\n'$0 出口2;; 以撒 完成 如果[!-z“$wflag”];然后 printf“W和-W参数为$wval\n” fi 如果[!-z“$mflag”];然后 printf“M和-M参数为$mval\n” fi 班次$($OPTIND-1)) printf“其余参数为:$*\n” 在$wval搜索列表中 tr“”“\n”Usr\U列表 虽然真实;做 如果[-s Usr_列表];然后 以美元为单位的i(cat Usr_列表);做 如果finger-m | grep$i;然后 echo“$i在线”| elm用户 sed'/$i/d'tmplist mv tmplist Usr\U列表 fi 完成 其他的 打破 fi 完成 终点标记

Linux 我总是得到一个';而语法';unix中at作业的输出出错,我不知道原因 #/usr/dt/bin/dtksh 而getopts w:m:option 做 案例中的$option w) wflag=1 wval=“$OPTARG”;; m) mflag=1 mval=“$OPTARG”;; ?)printf'BAD\n'$0 出口2;; 以撒 完成 如果[!-z“$wflag”];然后 printf“W和-W参数为$wval\n” fi 如果[!-z“$mflag”];然后 printf“M和-M参数为$mval\n” fi 班次$($OPTIND-1)) printf“其余参数为:$*\n” 在$wval搜索列表中 tr“”“\n”Usr\U列表 虽然真实;做 如果[-s Usr_列表];然后 以美元为单位的i(cat Usr_列表);做 如果finger-m | grep$i;然后 echo“$i在线”| elm用户 sed'/$i/d'tmplist mv tmplist Usr\U列表 fi 完成 其他的 打破 fi 完成 终点标记,linux,unix,loops,while-loop,ksh,Linux,Unix,Loops,While Loop,Ksh,基本上,我想继续搜索,直到它是空的。每次找到列表中的一个元素时,它都会被删除。一旦列表为空,请退出 第一次运行命令时没有错误消息,它只显示在包含at作业输出的电子邮件中 提前谢谢你的建议 编辑:脚本使用getopts,并为-w和-m取一个参数,w值设置为at作业的时间,m仍然必须使用。m的参数之后的任何参数都被发送到名为Search_List的文件中,Search_List将被编辑并保存为Usr_List。然后在while循环中,当Usr_列表不为空时,脚本根据Usr_列表中的名称检查finge

基本上,我想继续搜索,直到它是空的。每次找到列表中的一个元素时,它都会被删除。一旦列表为空,请退出

第一次运行命令时没有错误消息,它只显示在包含at作业输出的电子邮件中

提前谢谢你的建议

编辑:脚本使用getopts,并为-w和-m取一个参数,w值设置为at作业的时间,m仍然必须使用。m的参数之后的任何参数都被发送到名为Search_List的文件中,Search_List将被编辑并保存为Usr_List。然后在while循环中,当Usr_列表不为空时,脚本根据Usr_列表中的名称检查finger-m的结果。如果找到一个名称,它将从Usr_列表中删除。一旦Usr_列表为空,程序应停止

elm是发送电子邮件的一种方式,所以elm用户向用户发送电子邮件

错误是:

while:表达式语法


默认情况下,at使用/bin/sh

#!/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

然后将调试消息写入stdout或stderr。

正在插入您的herdoc。尝试引用分隔符:

exec 2&>1 > /tmp/somefile.log

您需要将
-k
选项传递到
at

 if finger -m | grep \$i; then
。。。

在-k$wval时,while命令和if命令需要合并

...
at -k $wval <<ENDMARKER
...

shebang
/usr/dt/bin/dtksh
是您所期望的吗?是ksh吗?我做的其他脚本都是ksh,它是korn Shell。最好用英语解释一下你想做什么,什么是
elm
。用elm explained编辑请将准确的错误消息复制并粘贴到你的问题中。似乎at作业是使用/bin执行的/csh@user2177896的确请看我的回答。不幸的是
如果finger-m | grep\$i;然后
似乎什么也没有改变。
 if finger -m | grep \$i; then
...
at -k $wval <<ENDMARKER
...
while [[ -s Usr_List ]]; do
    ......
done