Visit Our UNIX and Linux User Community

Executing a batch of files within a shell script with option to refire the individual files in batch

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Executing a batch of files within a shell script with option to refire the individual files in batch
# 1  
Old 01-09-2012
Executing a batch of files within a shell script with option to refire the individual files in batch

Hello everyone. I am new to shell scripting and i am required to create a shell script, the purpose of which i will explain below.

I am on a solaris server btw.

Before delving into the requirements, i will give youse an overview of what is currently in place and its purpose.

./ file1_import.xml    # This script accepts an XML file as an argument and performs different tasks and writes the result to an answerfile
./ file1_import_answer.xml # This script parses the xml answer file and prints the results and ERRORS if any.
a=`printf 'cat //Guiroot/Errors/Errorcount/text()'| xmllint --shell file1_import_answer.xml | sed -n 2p` #extract the errorcount from the answer file
if [ $a -gt 0 ] ; then
echo "execution successful"
./ file2_import.xml    
./ file2_import_answer.xml
b=`printf 'cat //Guiroot/Errors/Errorcount/text()'| xmllint --shell file2_import_answer.xml | sed -n 2p`
if [ $b -gt 0 ] ; then
echo "execution successful"
#And so on

There are over 50 of these xml files that needs to be executed by the shell. If there are errors in execution of an xml file, the shell script should exit and the error will need to be fixed.

The tricky part is: once the error is fixed, the script should present the user with an option to resume the execution from the xml file that failed or execute all the files from the beginning.

How do i go about designing a script that will do the following:
1. Present the user with a list of 50 files to run.
2. Any option that the user chooses should pass the file as an argument to the which do do the deed.
3. If the execution is successful the next file in the order is executed automatically and so on.

Do i put the above inside a function and pass the files as arguments or do i go with loops. If anyone can provide me with an example template, i'd be extremely grateful. Thanks in advance
# 2  
Old 01-09-2012
Hmm. Like you say, the tricky bit is saving it. Thinking on something.

---------- Post updated at 01:09 PM ---------- Previous update was at 12:47 PM ----------

This mockup works for me:


function fail
        printf "Should $1 succeed? "
        read VAR
        [ "$VAR" == "y" ] && return 0
        return 1

if [ -f .faillist ]
        set -- `cat .faillist`
        echo "Files succeeded:  `cat .succlist`"
        echo "Files remaining:  $*"
        echo "$1 failed previously."

        while [ "$VAR" != "r" -a "$VAR" != "s" -a "$VAR" != "q" ]
                printf " Resume, Start Over, Quit [r/s/q]: "
                read VAR

case "$VAR" in
r)                      ;;      # Change nothing, everything's ready
q)      exit 1          ;;
s)      rm  -f .faillist .succlist
        set -- *.xml
*)      set -- *.xml    ;;

while [ "$#" -gt 0 ]
        echo "$@" > .faillist
        if ! fail "$1"
                echo "Error in $1"
                echo "Aborting"
                exit 1

        printf " %s" "$1" >> .succlist

echo "Files succeeded:  `cat .succlist`"

rm .faillist
rm .succlist

It looks for xml files in the current directory but can be changed to look for them anywhere. It uses two files to record what succeeded and what failed.

Replace the 'fail' function with whatever you want to do to process these xml files. If you don't make it a function, you don't even need bash or ksh, nearly any sh should do.
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 01-09-2012
Thanks a mil Corona. I will get cracking on the shell script as soon as i have access to a terminal and post the resuts.

I really appreciate your time and effort.

Previous Thread | Next Thread
Test Your Knowledge in Computers #368
Difficulty: Medium
The Open Group released the Single UNIX Specification Version 2 in 1987.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Batch processing files through an interactive script

I am newish to the site and to unix. I have a functioning interactive script running on Mac that sorts and processes files located in an unsorted folder on my desktop. As it currently stands, the user types jpg into the command line, the script executes and iterates through the unsorted... (8 Replies)
Discussion started by: Braveheart
8 Replies

2. Shell Programming and Scripting

Need help in batch renaming files with bash shell script.

I have some 50+ files in the following format : abcd_vish_running_ZEBRA_20140818.dat_08-14-2014_23:08:23 abcd_vish_running_ZEB-RA_20140818.dat_08-14-2014_23:08:35 abcd_vish_running_ZEB_RA_20140818.dat_08-14-2014_23:08:37 abcd_vish_running_RI-NG_20140818.dat_08-14-2014_23:08:42... (5 Replies)
Discussion started by: SriRamKrish
5 Replies

3. Shell Programming and Scripting

Accessing files in batch

hai, I have a list of files having extension .sy in a folder. I want to find such files and print the first two columns of the files to new extension .tmp (1 Reply)
Discussion started by: sreejithalokkan
1 Replies

4. Shell Programming and Scripting

Need to exclude .NFSxxx files in clear old files batch script

I am new to Shell Scripting and need some help. The following batch job has been failing for me due to the .nfsxxx files in use. I need to know how to modify the following script to exclude the .nfsxxx files so this batch job will not fail on me. I have done lots of googling and keep coming back... (2 Replies)
Discussion started by: kimberlyg2007
2 Replies

5. Shell Programming and Scripting

script for renaming a batch of files

hi i have a folder full of files. some of the names are quite off because the dimensions were the same and i had to put a 'b' after the initial number so that it didnt overwrite. what i want is a script in unix to overwrite the filwe name leaving some of the title intact, e.g. below are some... (3 Replies)
Discussion started by: shabs1985
3 Replies

6. UNIX for Dummies Questions & Answers

Batch Renaming of Files

Hello all, thanks for your time (and this forum, what an awesome resource for newbs like myself!) Anyways, I've been given the task of importing content from a directory of about...7000 HTML files. They are all named appropriately and broken down by name depending on what book they belong too.... (8 Replies)
Discussion started by: gratefulhokie
8 Replies

7. UNIX for Dummies Questions & Answers

Permissions to files using batch script.

Hi all, I am using a batch script that ftps the compressed xml files to the Unix environment from the Windows environment and i perform this using the below line of coding: echo cd %VAR_TR_FTP_DIR% > %TR_FTP_BATCH_FILE BatchNum% Echo lcd "%VAR_TR_SOURCE_PATH_BatchNum%">> %TR_FTP_BATCH_FILE... (1 Reply)
Discussion started by: Codesearcher
1 Replies

8. Shell Programming and Scripting

batch shell script to zip individual files in directory - help

help trying to figure out a batch shell script to zip each file in a directory into its own zip file using this code but it does not work tryed this also nothing seems to work , just ends without zipping any files i have over 3000 files i need to zip up individualy ... (7 Replies)
Discussion started by: wingchun22
7 Replies

9. Shell Programming and Scripting

bash - batch script for extracting one file from multiple tar files

so i have hundreds of files named history.20071112.tar (history.YYYYMMDD.tar) and im looking to extract one file out of each archive called status_YYYYMMDDHH:MM.lis here is what i have so far: for FILE in `cat dirlist` do tar xvf $FILE ./status_* done dirlist is a text... (4 Replies)
Discussion started by: kuliksco
4 Replies

10. Shell Programming and Scripting

Converting Shell script to Dos batch files

Hi friends! I am having some simple shell script files to build postgresql database and all. Now i want to convert those scripts to dos batch scripts(to run on windows XP/2000/NT) because there is no need of unix emulation for latest release of postgresql. Please somebody help me. (1 Reply)
Discussion started by: darwinkna
1 Replies

Featured Tech Videos