passing argument from one function to another


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting passing argument from one function to another
# 50  
Old 09-04-2012
check your for loop PATHNAME is variable now not an array...Smilie
# 51  
Old 09-04-2012
Quote:
Originally Posted by pamu
check your for loop PATHNAME is variable now not an array...Smilie
Smilie ummmmm..how would it go then ?
This too did not work...
Code:
CopyFiles() {
    PATHNAME="$paths"

    if [ "$2" = "525" ]; then
        PATHNAME="$PATH525[*]"
    elif [ "$2" = "533" ]; then
        PATHNAME="$PATH533[*]"
    elif [ "$2" = "ZY" ]; then
        PATHNAME="$PATHZY[*]"
    fi
    echo "pathname is $PATHNAME"
    for FileNameIndx in "${PATHNAME[@]}"
          do
          if [[ ! -e "dest_path/$FileNameIndx" ]]; then
              ls -ltr "$FileNameIndx" | grep root | awk '{print string path $9}' string="$CONSTANT" path="$FileNameIndx"  >> "$FileName"
              echo "$FileNameIndx is copied"
          else
              echo "Check the FileName in ${PATHNAME[@]}"
          fi
        done
}

# 52  
Old 09-04-2012
Quote:
Originally Posted by nrjrasaxena
Smilie ummmmm..how would it go then ?
This too did not work...
Code:
CopyFiles() {
    PATHNAME="$paths"

    if [ "$2" = "525" ]; then
        PATHNAME="$PATH525[*]"
    elif [ "$2" = "533" ]; then
        PATHNAME="$PATH533[*]"
    elif [ "$2" = "ZY" ]; then
        PATHNAME="$PATHZY[*]"
    fi
    echo "pathname is $PATHNAME"
    for FileNameIndx in "${PATHNAME}"
          do
          if [[ ! -e "dest_path/$FileNameIndx" ]]; then
              ls -ltr "$FileNameIndx" | grep root | awk '{print string path $9}' string="$CONSTANT" path="$FileNameIndx"  >> "$FileName"
              echo "$FileNameIndx is copied"
          else
              echo "Check the FileName in ${PATHNAME}"
          fi
        done
}

edited above in your code.
not able to highlight bcoz logged in from my mobile.

you also try by removing for loop..

now this time for sleep ...Smilie

Code:
sleep 28000

# 53  
Old 09-04-2012
Quote:
Originally Posted by nrjrasaxena
Not Working...!! The echo command not showing the value of the PATHNAME variable.
That is to be expected. You have defined not variables but arrays. In fact you have defined arrays with only one member, which is kind of contradicting the purpose of an array.

Array variables are accessed this way:

Code:
# assignment
# first a fixed element:
array[1]="some-value"
# or with a variable:
index=2
array[$index]="other-value"

# now retrieve the values from the array
# first a fixed index:
echo "Array[1] is: ${array[1]}"

# now with a variable:
index=2
echo "Array[$index] is: ${array[$index]}"

# finally with a loop:

(( index = 1 ))
while [ $index -le ${array[@]} ] ; do
     echo "Array[$index] holds: ${array[$index]}"
     (( index += 1 ))
done

I suggest you get some book on shell programming and read this first, only then try to write shell scripts. It is simply not possible to learn it without any material teaching the matter.

I hope this helps.

bakunin
These 2 Users Gave Thanks to bakunin For This Post:
# 54  
Old 09-05-2012
Bug

Yesterday i am not able to check your code correctly, because i was using my mobile...

From above it clears that you still have lot doubts which needs to be cleared.

Let see how much clear this..

Code:
PATH525[1]="/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav1/"
PATH525[2]="/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav4/"
PATHZY[1]="/eos/uscms/store/user/pooja04//analysis2012/533/mc/zgammav1/"
                                                                                                                                                         
PATH533[1]="/eos/uscms/store/user/pooja04//analysis2012/533/data/datav14/"

CopyFiles() {
    PATHNAME="$paths"  # Assuming you are using $paths as by default path for PATHNAME.
    
    if [ "$2" = "525" ]; then
        PATHNAME=${PATH525[1]} # PATH525 this is an array... and here you have to decide which element of an PATH525 array needs to be printed as it has 2 values.
    elif [ "$2" = "533" ]; then
        PATHNAME=${PATH533[1]} # PATH533 this is an array...
    elif [ "$2" = "ZY" ]; then
        PATHNAME=${PATHZY[1]} # PATHZY this is an array...
    fi
    echo "pathname is $PATHNAME"
    
    #PATHNAME is variable. not an array. So we can skip the for loop here.. directly use PATHNAME for the checking directory.     
    
    if [[ ! -e "dest_path/$PATHNAME" ]]; then
    ls -ltr "$PATHNAME" | grep root | awk '{print string path $9}' string="$CONSTANT" path="$PATHNAME"  >> "$FileName"
              echo "$PATHNAME is copied"
    else
    echo "Check the FileName in $PATHNAME"
    fi
    }

Let me know if you still have any doubts..Smilie

pamuSmilie
# 55  
Old 09-05-2012
Hi Pamu, yeah it makes lot of sense.
I need to do the do the modification as marked in red
Quote:
Originally Posted by pamu
Code:
PATH525[1]="/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav1/"
PATH525[2]="/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav4/"
PATHZY[1]="/eos/uscms/store/user/pooja04//analysis2012/533/mc/zgammav1/"
                                                                                                                                                         
PATH533[1]="/eos/uscms/store/user/pooja04//analysis2012/533/data/datav14/"

CopyFiles() {
    PATHNAME="$paths"  # Assuming you are using $paths as by default path for PATHNAME.
    
    if [ "$2" = "525" ]; then
        PATHNAME=${PATH525[1]} # I need to use both the array element here. Same for other arrays as well. I tried using *, but did not help..
    elif [ "$2" = "533" ]; then
        PATHNAME=${PATH533[1]} # PATH533 this is an array...
    elif [ "$2" = "ZY" ]; then
        PATHNAME=${PATHZY[1]} # PATHZY this is an array...
    fi
    echo "pathname is $PATHNAME"
    
        
    if [[ ! -e "dest_path/$PATHNAME" ]]; then
    ls -ltr "$PATHNAME" | grep root | awk '{print string path $9}' string="$CONSTANT" path="$PATHNAME"  >> "$FileName"
              echo "$PATHNAME is copied"
    else
    echo "Check the FileName in $PATHNAME"
    fi
    }

Thanks..Smilie

---------- Post updated at 02:30 AM ---------- Previous update was at 02:28 AM ----------

Thanks. Somehow I am not in position to pick a book on shell scripting. I can learn while writing scripts..
Besides, by joining this forum and giving trial for writing code helped me in learning...Smilie

Quote:
Originally Posted by bakunin
That is to be expected. You have defined not variables but arrays. In fact you have defined arrays with only one member, which is kind of contradicting the purpose of an array.

Array variables are accessed this way:

Code:
# assignment
# first a fixed element:
array[1]="some-value"
# or with a variable:
index=2
array[$index]="other-value"

# now retrieve the values from the array
# first a fixed index:
echo "Array[1] is: ${array[1]}"

# now with a variable:
index=2
echo "Array[$index] is: ${array[$index]}"

# finally with a loop:

(( index = 1 ))
while [ $index -le ${array[@]} ] ; do
     echo "Array[$index] holds: ${array[$index]}"
     (( index += 1 ))
done

I suggest you get some book on shell programming and read this first, only then try to write shell scripts. It is simply not possible to learn it without any material teaching the matter.

I hope this helps.

bakunin
# 56  
Old 09-05-2012
Ok..

Then use PATHNAME as array only..

Code:
PATHNAME[1]=${PATH525[1]}
PATHNAME[2]=${PATH525[2]}

How to use array you know that..

If it has one element also make it is as first entry..

Code:
PATHNAME[1]=${PATHZY[1]}

This User Gave Thanks to pamu For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Passing a second argument

I am trying to pass a second argument like so: if ] then export ARG2=$2 else message "Second argument not specified: USAGE - $PROGRAM_NAME ARG1 ARG2" checkerror -e 2 -m "Please specify if it is a history or weekly (H or W) extract in the 2nd argument" fi however, it always goes... (4 Replies)
Discussion started by: MIA651
4 Replies

2. Programming

Parameter passing to function with void * as Argument

Earlier I had one structure C typedef struct c { int cc; }CS; I used to call a library function say int GetData(CS *x) which was returning me the above structure C with data. GetData(CS *x) Function call used to be like: CS CSobj; GetData(&CSObj); Now there are two... (12 Replies)
Discussion started by: rupeshkp728
12 Replies

3. Shell Programming and Scripting

Argument passing

How to pass the alphabet character as a argument in case and in if block? ex: c=$1 if a-z ]] then echo "alphabet" case $1 in a-z) echo "the value is a alphabet" edit by bakunin: please use CODE-tags. We REALLY mean it. (9 Replies)
Discussion started by: Roozo
9 Replies

4. Shell Programming and Scripting

Help with passing argument

Hi, I have a script that is scheduled with cron and runs every night. The cron part looks like this: 00 20 * * 0,1,2,3,4,5,6 /usr/local/bin/BACKUP TBTARM HOT DELETE My issue is with the 3rd parameter. Somewhere in the script, i want to tell the script to delete some files if the 3rd... (7 Replies)
Discussion started by: dollypee
7 Replies

5. Shell Programming and Scripting

pass function as argument to a function

I have the following code : function1 () { print "January" } function2() { case $1 in January) print "Dzisiaj mamy styczen" ;; *) ;; } main() { (1 Reply)
Discussion started by: presul
1 Replies

6. Shell Programming and Scripting

Passing commandline argument to a function

Hi, I have 2 ksh scripts. Script1.ksh contains function definition. script1.ksh function f1() { while getopts a:c: args do case $args in a) ARG1=$OPTARG ;; c) ARG2=$OPTARG ;; \?) echo "Error no valid Arguments passed" esac done echo $ARG1 echo $ARG2 script2.sh (2 Replies)
Discussion started by: siba.s.nayak
2 Replies

7. Shell Programming and Scripting

passing Argument

Hi All, i have script like below.. echo "1) first option" echo "" echo "2) second option" echo "" echo "*) please enter the correct option" read select case $select in 1) echo "first option selected" ;; 2) echo "second option selected" ;; *) echo "please enter the correct... (4 Replies)
Discussion started by: Shahul
4 Replies

8. Shell Programming and Scripting

Passing global variable to a function which is called by another function

Hi , I have three funcions f1, f2 and f3 . f1 calls f2 and f2 calls f3 . I have a global variable "period" which i want to pass to f3 . Can i pass the variable directly in the definition of f3 ? Pls help . sars (4 Replies)
Discussion started by: sars
4 Replies

9. Shell Programming and Scripting

Passing more than one argument in a function

Hi All, Calling a function with one argument and storing the return value in a shell script is as below:( so far I know) value="`fun_1 "argument1"`" Its working perfectly for me. Can u help me with passing more than one argument and storing the return value Thnaks in advance JS (1 Reply)
Discussion started by: jisha
1 Replies

10. UNIX for Dummies Questions & Answers

Passing Argument to Function

May i know how to pass an argument to a function in a shell script? Sorry, i din stated that it is in a shell script in my previous post. Means: checkStatus() { ........... } read status; I wanna use the status in the function checkstatus, how... (2 Replies)
Discussion started by: AkumaTay
2 Replies
Login or Register to Ask a Question