Sponsored Content
Top Forums Shell Programming and Scripting Read loop from two files using descriptors Post 302907618 by woodson2 on Monday 30th of June 2014 02:22:10 PM
Old 06-30-2014
Read loop from two files using descriptors

What I would like to do is read each line in the atdinfile:

A sample atdinfile would look like this:
Code:
651
652
653
654
655
656
657
658
659
660
661
664
665
666
667
668

I would like to grep through each atd job id looking for a match based on the input from another infile would is a listed of user groups:

A sample grplist file would look like this;
Code:
groupa
groupb
groupc
groupd
groupe

The code below will go through the list of atd jobs only once and try to match a corresponding line in the group file. This is not what I want. I want to grep for every group in each atd line before it moves onto the next atd job. Another problem is that the atd job list could be any number of lines whereas the grplist will tend to be static.

Code:
#!/bin/bash
set -x
ATDINFILE=/root/atdoutter.txt
DELTIMER=/root/delist.txt
USERNAME=ttimer
/usr/bin/atq | awk '{print $1}'|sort > $ATDINFILE
GRPLIST=/root/grouplist.txt
exec 3<$ATDINFILE
exec 4<$GRPLIST


while read atd <&3 && read grp <&4
do

at -c $atd|grep -wq "tmp-lock-ou.ldif."$USERNAME"" && at -c $atd | grep -wq "$grp"
 if [ $? -eq 0 ] ; then
   echo -e "${bldgrn}A $grp lock timer has been found for $USERNAME ${txtrst}" && echo "timer found for $USERNAME"
    sleep 1.5
    echo " "
     echo $atd | tee -a $DELTIMER >/dev/null 2>&1
      sleep 2
 fi
done < $ATDINFILE

Moderator's Comments:
Mod Comment CODE tags are for sample input and output as well as for code segments.

Last edited by Don Cragun; 06-30-2014 at 03:54 PM.. Reason: Add CODE tags.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

help with a 'while read' loop to change the names of files

Hi, I am new to scripting, so any help on this would be much appreciated. I am trying to rename a bunch of files, taking the names sequentially from a list read in another file... # ls oldnames file_1 file_2 file_3 # cat names red yellow green I want the files to take on the... (6 Replies)
Discussion started by: starsky
6 Replies

2. UNIX for Dummies Questions & Answers

how to list the files using File Descriptors

hello, I have written a script named listall.sh with the following codes init. #!/bin/bash PATH="/proj/cmon/$1" echo $PATH if ; then echo "Usage: $0 ***" exit 1 else ls -l $PATH/*.sc fi Here there are 3 subdirectories (namely - src, data and jobs)under /proj/cmon, so... (2 Replies)
Discussion started by: shyjuezy
2 Replies

3. UNIX for Dummies Questions & Answers

Write/read to file descriptors

Is it possible to write to file descriptor 0 and read from 1 or 2? How could this be implemented? (3 Replies)
Discussion started by: machshev
3 Replies

4. UNIX for Dummies Questions & Answers

how to access files via their descriptors?

hello, I'm new here, and new to Linux. I was wondering how to get hold of a certain file's descriptor, and how to use that number so that I access the contents of the file. please give me a full example, that is (1) how to determine the descriptor and (2) what magic symbols to use so that... (4 Replies)
Discussion started by: ialoq
4 Replies

5. UNIX for Advanced & Expert Users

read() wont allow me to read files larger than 2 gig (on a 64bit)

Hi the following c-code utilizing the 'read()' man 2 read method cant read in files larger that 2gig. Hi I've found a strange problem on ubuntu64bit, that limits the data you are allowed to allocate on a 64bit platform using the c function 'read()' The following program wont allow to allocate... (14 Replies)
Discussion started by: monkeyking
14 Replies

6. Shell Programming and Scripting

until loop and read

Hi guys what I wanna do is to create a script where can I input several times a file - assume with read function that will be inserted into a temp. file for further processing. When I press q I want that the loop will stop and continue in my script I typed this but the options q is not working... (6 Replies)
Discussion started by: kl1ngac1k
6 Replies

7. Shell Programming and Scripting

Read and edit multiple files using a while loop

Hi all, I would like to simply read a file which lists a number of pathnames and files, then search and replace key strings using a few vi commands: :1,$s/search_str/replace_str/g<return> but I am not sure how to automate the <return> of these vis commands when I am putting this in a... (8 Replies)
Discussion started by: cyberfrog
8 Replies

8. UNIX for Dummies Questions & Answers

Read statement within while read loop

hi, this is my script #!/bin/ksh cat temp_file.dat | while read line do read test if ]; then break else echo "ERROR" fi done when i execute this code , the script does wait for the user input . it directly prints "ERROR" and terminates after the no. of times as there... (3 Replies)
Discussion started by: siva1612
3 Replies

9. Shell Programming and Scripting

For loop inside awk to read and print contents of files

Hello, I have a set of files Xfile0001 - Xfile0021, and the content of this files (one at a time) needs to be printed between some line (lines start with word "Generated") that I am extracting from another file called file7.txt and all the output goes into output.txt. First I tried creating a for... (5 Replies)
Discussion started by: jaldo0805
5 Replies

10. Programming

Read .xlsx and text files in a loop using openpyxl

I have a list of .xlsx files (names 1.xlsx, 2.xlsx etc) in a directory, on which I need to insert data from its corresponding text file (named 1.txt, 2.txt etc) on the second worksheet named 'Filtered' and save it. The code I am trying is #!/usr/bin/python import os from... (8 Replies)
Discussion started by: nans
8 Replies
AT(1)							      General Commands Manual							     AT(1)

NAME
at, batch, atq, atrm - queue, examine or delete jobs for later execution SYNOPSIS
at [-V] [-q queue] [-f file] [-mMlv] timespec... at [-V] [-q queue] [-f file] [-mMkv] [-t time] at -c job [job...] atq [-V] [-q queue] at [-rd] job [job...] atrm [-V] job [job...] batch at -b DESCRIPTION
at and batch read commands from standard input or a specified file which are to be executed at a later time, using /bin/sh. at executes commands at a specified time. atq lists the user's pending jobs, unless the user is the superuser; in that case, everybody's jobs are listed. The format of the out- put lines (one for each job) is: Job number, date, hour, queue, and username. atrm deletes jobs, identified by their job number. batch executes commands when system load levels permit; in other words, when the load average drops below 0.8, or the value specified in the invocation of atd. At allows fairly complex time specifications, extending the POSIX.2 standard. It accepts times of the form HH:MM to run a job at a spe- cific time of day. (If that time is already past, the next day is assumed.) You may also specify midnight, noon, or teatime (4pm) and you can have a time-of-day suffixed with AM or PM for running in the morning or the evening. You can also say what day the job will be run, by giving a date in the form month-name day with an optional year, or giving a date of the form MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD. The specification of a date must follow the specification of the time of day. You can also give times like now + count time-units, where the time-units can be minutes, hours, days, or weeks and you can tell at to run the job today by suffixing the time with today and to run the job tomorrow by suffixing the time with tomorrow. For example, to run a job at 4pm three days from now, you would do at 4pm + 3 days, to run a job at 10:00am on July 31, you would do at 10am Jul 31 and to run a job at 1am tomorrow, you would do at 1am tomorrow. The definition of the time specification can be found in /usr/share/doc/at-3.1.13/timespec. For both at and batch, commands are read from standard input or the file specified with the -f option and executed. 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. As at is currently implemented as a setuid program, other environment variables (e.g. LD_LIBRARY_PATH or LD_PRELOAD) are also not exported. This may change in the future. As a workaround, set these variables explicitly in your job. An at - or batch - command invoked from a su(1) shell will retain the current userid. The user will be mailed standard error and standard output from his commands, if any. Mail will be sent using the command /usr/sbin/sendmail. If at is executed from a su(1) shell, the owner of the login shell will receive the mail. The superuser may use these commands in any case. For other users, permission to use at is determined by the files /etc/at.allow and /etc/at.deny. See at.allow(5) for details. OPTIONS
-V prints the version number to standard error and exit successfully. -q queue uses the specified queue. A queue designation consists of a single letter; valid queue designations range from a to z and A to Z. The a queue is the default for at and the b queue for batch. Queues with higher letters run with increased niceness. The special queue "=" is reserved for jobs which are currently running. If a job is submitted to a queue designated with an uppercase letter, the job is treated as if it were submitted to batch at the time of the job. Once the time is reached, the batch processing rules with respect to load average apply. If atq is given a spe- cific queue, it will only show jobs pending in that queue. -m Send mail to the user when the job has completed even if there was no output. -M Never send mail to the user. -f file Reads the job from file rather than standard input. -t time run the job at time, given in the format [[CC]YY]MMDDhhmm[.ss] -l Is an alias for atq. -r Is an alias for atrm. -d Is an alias for atrm. -b is an alias for batch. -v Shows the time the job will be executed before reading the job. Times displayed will be in the format "Thu Feb 20 14:50:00 1997". -c cats the jobs listed on the command line to standard output. FILES
/var/spool/at /var/spool/at/spool /proc/loadavg /var/run/utmp /etc/at.allow /etc/at.deny SEE ALSO
at.allow(5), at.deny(5), atd(8), cron(1), nice(1), sh(1), umask(2). BUGS
The correct operation of batch for Linux depends on the presence of a proc- type directory mounted on /proc. If the file /var/run/utmp is not available or corrupted, or if the user is not logged on at the time at is invoked, the mail is sent to the userid found in the environment variable LOGNAME. If that is undefined or empty, the current userid is assumed. At and batch as presently implemented are not suitable when users are competing for resources. If this is the case for your site, you might want to consider another batch system, such as nqs. AUTHOR
At was mostly written by Thomas Koenig, ig25@rz.uni-karlsruhe.de. 2009-11-14 AT(1)
All times are GMT -4. The time now is 08:46 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy