Incapsulating Functions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Incapsulating Functions
# 1  
Old 11-29-2010
Incapsulating Functions

Hello together,

I want to add 2 additional functions to a major function (format_work()).

The format_work() is calling two functions (check_file() & split_file()).

How should it look like, when both subfunctions are incapsulated?

Code:
format_work() {
    echo "Start of COM_WORK formatting" >> ${LOG}
    i=0
    while [ $i -lt $NB_SFI_IPN_ARRAY ]
    do
        FILE_NAME=$COM_WORK/${FILE_SFI_IPN_ARRAY[$i]}.$EXT_SFI_IPN
        # echo FILE_NAME is $FILE_NAME
        check_file $FILE_NAME
        if [ $? -eq 0 ]; then
            split_file $FILE_NAME ${FILE_SFI_IPN_ARRAY[$i]} $EXT_SFI_IPN
            rm -f $FILE_NAME 2> /dev/null
        else
            echo "No change for $FILE_NAME" >> ${LOG}
        fi
        i=$i+1
    done
    i=0
    while [ $i -lt $NB_SFI_OSMS_ARRAY ]
    do
        FILE_NAME_S=$COM_WORK/${FILE_SFI_OSMS_ARRAY[$i]}.$EXT_SFI_OSMS
        FILE_NAME_T=$COM_WORK/${FILE_SFI_OSMS_ARRAY[$i]}$TODAY.$EXT_SFI_OSMS
        # echo FILE_NAME is $FILE_NAME
        mv $FILE_NAME_S $FILE_NAME_T 2> /dev/null
        if [ $? -ne 0 ]; then
            echo "Renaming of $FILE_NAME_T not successful" >> ${LOG}
        else
            echo "Renaming of $FILE_NAME_T successful" >> ${LOG}
        fi
        i=$i+1
    done
    echo "End of COM_WORK formatting\n" >> ${LOG}
    return 0
}
#-----------------------------------------------------------------------
check_file() {
    # set -x
     
    if [ $# -ne 1 ]; then
        RC=1
        echo "Bad arguments, expected 1, received ${#}" >> ${LOG}
        return $RC
    fi
    # measure number of lines in file
    RECEIVED_NUMBER_OF_LINES=`wc -l $1 | awk '{print $1}'` 2> /dev/null
    # echo RECEIVED_NUMBER_OF_LINES $RECEIVED_NUMBER_OF_LINES
    if [ $? -ne 0 ]; then
        echo "Measuring number of lines in EOT file not successful" >> ${LOG}
        return 1
    fi
    # echo check_file $1
    if [ "$RECEIVED_NUMBER_OF_LINES" -gt $MAX_LINE ]; then
        return 0
    else
        return 1
    fi
}
#-----------------------------------------------------------------------
split_file()
{
    if [ $# -ne 3 ]; then
        RC=1
        echo "Bad arguments, expected 1, received ${#}" >> ${LOG}
        return $RC
    fi
    split -l $MAX_LINE -a 1 $1
    if [ $? -ne 0 ]; then
        echo "Split of file $1 not successful" >> ${LOG}
        return 1
    fi 
    ls x? > dirlist1
    NB_OF_SPLIT_FILES=`wc -l dirlist1 | awk '{print $1}'` 2> /dev/null
    # echo NB_OF_SPLIT_FILES $NB_OF_SPLIT_FILES
    j=0
    while [ $j -lt $NB_OF_SPLIT_FILES ]
    do
        INC=${SERNO_ARRAY[$j]}
        FILE_OLD=${XX_ARRAY[$j]}
        FILE_NEW=${2}$INC.$3
        # echo $FILE_OLD
        # echo $FILE_NEW
        mv $FILE_OLD $COM_WORK/$FILE_NEW
        j=$j+1
    done
    echo "Splitting of $1 into $NB_OF_SPLIT_FILES" >> ${LOG}
    return 0
}

Moderator's Comments:
Mod Comment Using [CODE] tags and indenting your code helps with readability

Last edited by pludi; 11-29-2010 at 11:03 AM.. Reason: code tags, please...
# 2  
Old 11-29-2010
I think function must be declared before being called (the order they are declared matter)
check_file and split_file may have to be declared before format_work

Double quote the variable that are passed as argument to a function you call (or use eval ) to avoir interpreting issue.

by the way,if you managed return code correctly in your functions,

a statements like

Code:
check_file "$WHATEVER"
if [ $? -eq 0 ]; then
    echo ok
else 
    echo ko
fi

could be written smthg like (or with a ! )
Code:
if ( check_file $WHATEVER >/dev/null ) ; then
    echo ok
else 
    echo ko
fi

Corona would give you a "useless use of test award" for that Smilie

Last edited by ctsgnb; 11-29-2010 at 04:59 PM..
# 3  
Old 11-29-2010
Really that's not so bad a construct. It doesn't mean inevitable waste the way UUOC does.

I might boil it down into check_file $FILENAME || echo "ko" though. One line instead of five. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to execute functions or initiate functions as command line parameters for below requirement?

I have 7 functions those need to be executed as command line inputs, I tried with below code it’s not executing function. If I run the ./script 2 then fun2 should execute , how to initiate that function I tried case and if else also, how to initiate function from command line if then... (8 Replies)
Discussion started by: saku
8 Replies

2. Programming

Functions

Hi All, Can any one help me. I am calling in a function2 with string as parameter from function1, the function1 gives 3 values. how i get the 3 values from funciton2 to function1. i have to give a return or something. thanks in advance. (2 Replies)
Discussion started by: uday.sena.m
2 Replies

3. UNIX for Dummies Questions & Answers

== vs -eq and functions

Hey I have a question.... what is the difference between using == vs -eq when testing in WHILE loops. I use the following test that only worked with == signs.... if why do i need == and not -eq? 2. I need to re-use some code in a couple places in this script. is functions my best... (5 Replies)
Discussion started by: danieldcc
5 Replies

4. Shell Programming and Scripting

i think i need functions ?

Hi, im making a little script but need some help Code i have so far is read -p 'Bot Nickname:' ecnick read -p 'Bot Username:' ecusername read -p 'Bot Realname:' ecrealname read -p 'Your Email:' ecemail echo '' echo Your bots nickname is set to $ecnick echo Your bots username is set to... (2 Replies)
Discussion started by: Gemster
2 Replies

5. UNIX for Dummies Questions & Answers

Help with functions

Hi, I am exploring with defining functions in my BASH shell scripts. However, I am bit confused about how to pass parameters to my functions. I was under the impression that you must do something like the following: Define a function called "sample_function": function sample_function {... (3 Replies)
Discussion started by: msb65
3 Replies

6. Shell Programming and Scripting

Need a little help with functions

I'm semi new to unix/linux and am trying to convert a program I wrote in C++ to a bash script. It's a program that prints Fibonacci's series. I have found scripts that will do it, but I'm trying persistently to get this one to work. The problem occurs when I try to return a value from the function.... (3 Replies)
Discussion started by: Glowworm
3 Replies

7. Shell Programming and Scripting

functions

I have korn shells where I want to create a function passing $1 to a function , determine my $STAT_ENV value, set the paths and return the paths for STATSH,STATPRM,STATSQR,STATSQL,STATCTL TO BE USED IN THE UNIX SCRIPT THE CALLED THE fucnction in the first place. Can someone tell me the best... (2 Replies)
Discussion started by: TimHortons
2 Replies

8. Shell Programming and Scripting

Use of functions

Hi my shell is tcsh can I have functions in my shell scripting? Is the below shell script correct. Can I have two functions and call one of them as required. ---------- echo "functions" f1 f1 () { echo "hello" } f2 () (1 Reply)
Discussion started by: amitrajvarma
1 Replies

9. Shell Programming and Scripting

functions in

hi could anybody please suggest me how to put a function memory for particular user. say i am a user rao. want have a function foo in memory . i have done this .typed the function function in the shell it worked for the session.but next time i do login its not there . i can i have a... (6 Replies)
Discussion started by: Raom
6 Replies

10. Shell Programming and Scripting

Regarding functions

Hi, I have a function or script like this. show() { echo "Hi" } | tee -a log show This creates a logfile and prints Hi in it. Now when I try to do the same for sql like this: show() { sqlplus -s scott/tiger<<! select * from details; ! } | tee -a log show Then it gives me a... (2 Replies)
Discussion started by: sendhilmani
2 Replies
Login or Register to Ask a Question