Need help with the script


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Need help with the script
# 1  
Old 02-25-2009
Need help with the script

I am trying to write a shell script for the following requirement .
In the directory TEST there are following set of files
a_79cdcd9c8_200809.txt
a_*_200808.txt
a_*_200807.txt
b...
c...
d....
e...
f...
g....
Need to read the ones starting with a -e (These are not the actual starting strings).So goal is to read and process all the files for that quarter.All files starting with {a -e ] and ending with 200809,200809,200807 followed by .txt need to be processed one at a time.

I am not able to figure out the problem
Code:
#!/bin/ksh
#Array
set -A files -- a b c d e
YEAR=2008
Month=09
for LINE in "${files[@]}";
do
echo $LINE
COUNT=1
typeset -xZ2 Mth=$Mon
echo $Mth
while [ $COUNT -lt 4 ];
do
echo "$TEST/$LINE"_*"$YEAR$Mth".txt 
ls -1 "$TEST/$LINE"_*"$YEAR$Mth".txt|while read obj # I think this is the # place where the error lies. It should loop twice if there are two files #with this pattern
  do
    echo "Inside DO loop"
LINE=`basename $obj .txt`
#do something
done
Mth=`expr $Mth - 1` # Reduce the count of month to read the files for #next month
COUNT=`expr $COUNT + 1`# Count controls the execution just for a #quarter and hence loops thrice.
done
done

Thanks
w020637
# 2  
Old 02-26-2009
Your script looks complex...
if you put set -x at the begining of your script, you should see where the error is.
You could also try to redirect result of ls in a text file, and then use the file with the while loop.
This could show where the probleme is.

to read "a b c d e" files, why not to had a grep "^[abcde]"

it seems more simple.
# 3  
Old 02-26-2009
Astgen,

a b c d e is just a sample as I have specified that the actual strings are different.

I have been able to debug the script. The problem was that the same variable LINE was being used twice (the array and the basename computation).

Thanks
 
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