Script help please


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script help please
# 1  
Old 05-24-2011
Script help please

Ok here is my code:

Code:
record_count_threshold=20
cd /usr/apps/data/output
ls -d *ROUTE* | while read line
do
echo "$line: `ls -ltr $line | grep -v DONE | wc -l`"
done > ${tmp_file}
echo
cat ${tmp_file} | awk '{if($2>'"${record_count_threshold}"'){print "Number of files backlogged: " $1 $2}}'

Ok so what I am trying to figure out is how to make this so that if there are no results that are over the threshold of 20 - that the output is:

NO BACKLOG

If there are results over 20 it displays those results

I was going to use a case statement but not sure how I am supposed to code that.

Thanks.
# 2  
Old 05-24-2011
Code:
ls -d *ROUTE*|while read -r dir;do if [ $(ls -1 $dir|grep -Ev 'DONE|total'|wc -l) -gt 20 ] ; then 
echo "$dir $(ls -ltr $dir|grep -Ev 'DONE|total')" ; else echo "$dir --> NO BACKLOG" ; fi ; done

# 3  
Old 05-24-2011
Thank you. What is:

Code:
-gt

for?

And -E doesn't work for me on my syste.
Also what was the total for?

And last it works but it shows me the list of files where as I want just the count as there can be like 200 files in one directory.
thanks again!

---------- Post updated at 01:32 PM ---------- Previous update was at 01:10 PM ----------

i got it!
But i would still like to know the -gt and E

thank you!!!
# 4  
Old 05-24-2011
Code:
gt is greater than
-E use extended-regexp for grep

try change to
Code:
grep -Ev 'DONE|total'

to
Code:
egrep -v 'DONE|total'


regards
ygemici
# 5  
Old 05-24-2011
Some basic questions.
What Operating System do you have?
Code:
uname -a

What Shell are you using?
Code:
echo "${SHELL}"

The script in Post #1 appears to be designed to look at all the directories which match the pattern *ROUTE* and count the number of files where the name of the file (not the contents) does not contain the string "DONE".

Hmm. The script as posted does not set a value for ${tmp_file}.

One idea without knowing what Shell you have:
Had a bit of fun avoiding the sort of syntax extensions we find in certain modern Shells.
Note the use of "ls -1" (one) rather than "ls -l" (ell).
I have assumed that there is only one depth of directory and removed "-r" from "ls". This may be wrong!

Code:
# Parameters
record_count_threshold=20
# Create temporary file including current process ID "$$" in the file name. 
tmp_file=/tmp/mytmpfile_$$
touch "${tmp_file}"    # Ensure file exists. This stops the count process failing if there is no backlog.
#
# Processing starts here
#
cd /usr/apps/data/output
#
# Look for directory names containing the string "ROUTE".
# Allow for no match by redirecting STDERR 
ls -1d *ROUTE* 2>/dev/null | while read dir
do
     # Make sure that this is a directory
     if [ -d "${dir}" ]
     then
            # Look for file matches
            # Allow for no match by redirecting STDERR
            ls -1 "${dir}" 2>dev/null | grep -v "DONE" | while read filename
            do
                   # Is the match a file?
                   if [ -f "${filename}" ]
                   then
                            # Output the filename so we can count them
                            echo "${filename}"
                   fi
            done
     fi
done > ${tmp_file}
#
# Count the number of matching files
backlog=`cat ${tmp_file}|wc -l`
# Compare with threshold.   -gt means Greater Than.
if [ ${backlog} -gt ${record_count_threshold} ]
then
        echo "Number of files backlogged: ${backlog}"
else
        echo "NO BACKLOG"
fi
#
# Clean up temporary file
rm "${tmp_file}"



Ps. Anybody who posts UUOC had better have a proven alternative piece of code.

Last edited by methyl; 05-24-2011 at 07:56 PM.. Reason: typos and assumptions based on guessing the directory structure. And correct transcription errors. And enhance comment lines.
# 6  
Old 05-25-2011
UUOC!!!
Code:
backlog=$( wc -l ${tmp_file} | cut -d\  -f 1 )

:P
# 7  
Old 05-25-2011
@pludi & LOL
1) We don't know whether this Shell supports $( command ) syntax thought the redirect on the "done" line does suggests that it is ksh.
Anyway the "cat" solution is faster and easier to read.
2) Worth reading the "Useful Uses of Cat" web page.
Useful use of cat(1)
And Kernigan's document which is appended to that page. I really missed the "pip" command.
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question