To answer your question about how the error can be at line 67 when the script only has 5 lines, realize that at adds a bunch of stuff at the top of the script - from the man page of the at on my machine: The working directory, the environment (except for the variables BASH_VERSINFO, DISPLAY, EUID, GROUPS, SHELLOPTS, TERM, UID, and _) and the umask are retained from the time of invocation. so there is easily another 60+ lines to restore your environment to what it was when you ran at.
If you changed your test script to read from a non existent file say, test-mail.list924 you should see the error again. I suspect the required facts to explain the failure are 1. what directory is the real mail.list file in? 2. what directory are you in when you submit the at job? to be safe, you could add to the top of the script cd <directory where mail.list is found> if you have root access, the easiest way to see what the script is, that at will be executing is to go into /var/spool/at and copy the script elsewhere, to examine or play with. On my system /var/spool/at has a directory named spool and the at jobs were of the form a<some long number> I assume the number encodes a sequence number and launch time. do somthing like sudo bash ls /var/spool/at cp /var/spool/at/a0001601761670 /tmp/foo chown rshepard /tmp/foo exit where of course the a0001601761670 is really whatever you see as a job name from the ls. You could also write out info to a file from the batch job, like out from env, $PWD or even try cat'ing $0 but the scripts at generate on my system seem to make $0 (the name of the script being executed) useless, as the actual at script generated, does all the setup then pipes the script into a shell. steve Rich Shepard wrote: > On Thu, 11 Aug 2016, chris (fool) mccraw wrote: > >> Be that as it may, the shell script would have said "/path/to/mail.list - >> file not found" if it was *using* that full path, so you are still (IMHO) >> looking for an unqualified pathname use. > The test script ran correctly. > > test-1.sh: > > #!/bin/bash > > while read LINE; do > ADDR=$(echo $LINE | cut -d: -f1) > GRTG=$(echo $LINE | cut -d: -f2) > m4 -D GREETING="$GRTG" test-1.m4 | mail -s 'Testing 1, 2, 3' $ADDR > done < test-mail.list > > test-1.m4: > > GREETING: > > This is a test message. That's all. > > test-mail.list: > > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > rshep...@twodogs.us:Rich > > command issued: > > at -f ~/test-1.sh 08:40 am > > I just verified that leaving off the '-f' flag prevents the command from > being added to the at queue; the shell reports: > > syntax error. Last token seen: / > Garbled time > > Wonder what happened. > > Thanks, > > Rich > _______________________________________________ > PLUG mailing list > PLUG@lists.pdxlinux.org > http://lists.pdxlinux.org/mailman/listinfo/plug > _______________________________________________ PLUG mailing list PLUG@lists.pdxlinux.org http://lists.pdxlinux.org/mailman/listinfo/plug