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
# 15  
Old 09-01-2012
Hi,

Could you please post your modified script here..
# 16  
Old 09-01-2012
Quote:
Originally Posted by elixir_sinari
See if you can get something out of the following:
Code:
a[0]="HI"
a[1]="THERE"

for i in "${a[@]}"
do
 echo $i
done

HI
THERE

for i in ${!a[@]}
do
 echo $i
done

0
1

Hi,
Yeah, working all fine...and getting the same output as you showed. No issues at all..
# 17  
Old 09-01-2012
Smilie...Never mind:
Code:
CopyFilesInfo() {
    for j in "${PATHNAME[@]}"
      do
      Path=$j
      ### or use $j directly
      .
      .
    done
}


Last edited by elixir_sinari; 09-01-2012 at 07:57 AM..
# 18  
Old 09-01-2012
There is someting wrong: SmilieSmilieSmilie
the script is here [2] and the error is [1]


[1]
Code:
  
Stage 1
Stage 2
Stage 4
stag5
stag6
./Script4JobSubmit_v1.sh: line 57: ls: command not found
./Script4JobSubmit_v1.sh: line 57: grep: command not found
./Script4JobSubmit_v1.sh: line 57: awk: command not found
/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav1/ are Copied
stag6
./Script4JobSubmit_v1.sh: line 57: ls: command not found
./Script4JobSubmit_v1.sh: line 57: grep: command not found
./Script4JobSubmit_v1.sh: line 57: awk: command not found
/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav4/ are Copied
Division Of Jobs
./Script4JobSubmit_v1.sh: line 66: split: command not found
./Script4JobSubmit_v1.sh: line 73: perl: command not found
./Script4JobSubmit_v1.sh: line 74: rm: command not found
1  succesful
CondorJob  ================ 0 ==============
./Script4JobSubmit_v1.sh: line 114: cp: command not found
./Script4JobSubmit_v1.sh: line 115: condor_submit: command not found
./Script4JobSubmit_v1.sh: line 117: rm: command not found
Going To Sleep..
./Script4JobSubmit_v1.sh: line 119: sleep: command not found
[pooja04@cmslpc01 v2]$

[2]
Code:
  
#!/bin/bash
date
################################################
# Script written by Pooja Saxena               #
# Fri, Aug 17-2012, 00:20 hr                   # 
# Usage ./script DataMC.sh temp.sh             #
################################################

# Global Parameters
#PATHNAME=/eos/uscms/store/user/pooja04//analysis2012/525/data/0001/data/30Aug2012/   #533
PATHNAME[1]="/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav1/"
PATHNAME[2]="/eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/datav4/"

FileName=DataFileName
SCRIPT=DataMC.sh
TEMPSCRIPT=temp.sh
CARD=card_Data2011AB_Zee_40GeV
CondorJob=Job_condor
#typset -i max=$i

function pause(){
   read -p "$*"
}

usage () {
    echo "Script to submit offline batch mode jobs"
    echo "Possible arguments:"
    echo "  batchjob - to submit batch jobs"
    echo "  condorjob - to submit batch jobs"
    echo "  help - shows this help"
    echo "   ./Script4OfflineJobs.sh batchjob"
}

# this sets CLASSPATH                                                                                                                                                  
path () {

    echo "Stage 0"
    source /uscms/home/pooja04/.bashrc
    echo "Stage 1"
  #   source /uscms/home/pooja04/ToBegin.sh
    cd /uscms_data/d3/pooja04/CMSSW_5_3_3_patch2/src/ElectroWeakAnalysis/MultiBosons/test
    echo "Stage 2"
    eval `scram runtime -sh`
 #   cmsenv
    cd /uscms/home/pooja04/script/AnalysisCode/Code42012/v2
    echo "Stage 4"
}


#To Copy the Files Inforamtion from the Destination Folder
CopyFilesInfo() {
    echo "stag5"
    for j in "${PATHNAME[@]}"
      do
      echo "stag6"
      PATH=$j
      ls -ltr "$PATH" | grep root | awk '{print string path $9}' string="$CONSTANT" path="$PATH"  >> "$FileName"
      echo "$PATH are Copied"
    done
}

#Divide the jobs in small files
DivideJobs() {
    echo "Division Of Jobs"
    #split -$4  $3 chunk
    split -10  $FileName chunk
    
    i=0
    for file in chunk*
      do
      ((i=i+1))
      new_file="data"$i".list"
      perl -0pe 's/\n$//' $file >  $new_file
      rm -rf $file
      echo $i ' succesful'
    done
}

#For Submiting the batchjobs
SubmitBatchJob () {
    for (( k=0; k<= $max ; ++k )) ; 
      do
      echo "SHELL SCRIPTING ================ $i ==============" 
      new_file="temp"$k".sh"
      cp $SCRIPT $new_file
      
      if [ $k == 0 ]; then
	  source $new_file
	  pause 'Press [Enter] key to continue...'
	  rm $new_file
      else
	  if [ $k > 0 ]; then
	      { rm $CARD; sed -e "s/data$i/data$((k+1))/g" > $CARD; } < $CARD
	      source $new_file
	      pause 'Press [Enter] key to continue...'
	      rm $new_file
	  else
	      echo "SUCCESFULLY DONE.."
	  fi
      fi
    done
}    


#For Submiting the batchjobs
SubmitCondorJob () {
    max=$i
    for (( k=0; k < $max ; k++ ))
      do
      echo "CondorJob  ================ $k ==============" 
      TEMPSCRIPT="temp"$k".sh"

      if [ $k == 0 ]; then
	  cp $SCRIPT $TEMPSCRIPT
	  condor_submit $CondorJob
#	  { rm $CondorJob; sed -e "s/temp$k/temp$((k+1))/g" > $CondorJob; } < $CondorJob
	  rm $TEMPSCRIPT
	  echo "Going To Sleep.."
	  sleep 50
      else
	  if [ $k > 0 ]; then
	      { rm $CARD; sed -e "s/data$k/data$((k+1))/g" > $CARD; } < $CARD
	      cp $SCRIPT $TEMPSCRIPT 
	      { rm $CondorJob; sed -e "s/temp$k/temp$((k+1))/g" > $CondorJob; } < $CondorJob
	      condor_submit $CondorJob
	      rm $TEMPSCRIPT
	      echo "Going To Sleep.."
	      sleep 50
	      echo "SUCCESFULLY DONE.."
	  fi
      fi
    done
}    

if [ $# -lt 1 ]; then
    usage
    exit 1
fi

if [ $1 = "help" ]; then
    usage
    exit 0

elif [ "$1" = "batchjob" ]; then
    path  
    CopyFilesInfo
    DivideJobs
    SubmitBatchJob
    exit 0

elif [ "$1" = "condorjob" ]; then
    path
    CopyFilesInfo 
    DivideJobs
    SubmitCondorJob
    exit 0
fi
    


#$EXTRA COMMAND
#find /eos/uscms/store/user/pooja04//analysis2012/525/data/doubleele/2012/ -name '*.root' | xargs ls -1tr | tee listfile | while read LINE

# 19  
Old 09-01-2012
Just an observation:

much of the confusion is caused by using "i" or "j" instead of meaningful variable names. If a variable is an index to a filename, then call it "FileNameIdx" or something such, instead of "i". Once you accumulate several "i"s, "j"s and "k"s you sure will not know any more which counts what.

Do yourself a favour and don't save on the few keystrokes. You will save in the long run with less debugging effort what you invest up front in clarity.

I hope this helps.

bakunin
This User Gave Thanks to bakunin For This Post:
# 20  
Old 09-01-2012
MySQL

Use below thing ...

And one most important thing don't use PATH as variable because bash store it's basic command path to the PATH variable...( Once Restart Your session) and run it...

This time it will work for sure...Smilie

Code:
CopyFilesInfo() {
 for j in "${PATHNAME[@]}"
      do
      echo "stag6"
      
      ls -ltr "$j" | grep root | awk '{print string path $9}' string="CONSTANT" path="$j"  
      
      echo "$j are Copied"
    done
    
    }

This User Gave Thanks to pamu For This Post:
# 21  
Old 09-01-2012
SmilieSmilieSmilieSmilieSmilie

THANKS.
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