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
# 29  
Old 09-03-2012
Quote:
Originally Posted by nrjrasaxena
Yes it has..definitely..!! But on top of it, it has duplication of those files as well..SmilieSmilie
Just checked..it duplicate the file name THRICE..Smilie
Oppsiee..SORRY Smilie it was my mistake..Smilie
I need to delte the FileName every time I run my script;.else it copy in the existing file and the entries keep increasing..Smilie Smilie

Sorry again
but please check the sed issue..
# 30  
Old 09-03-2012
Quote:
Originally Posted by nrjrasaxena
Yes it has..definitely..!! But on top of it, it has duplication of those files as well..SmilieSmilie
Just checked..it duplicate the file name THRICE..Smilie
Might be you have run this command thrice...Smilie

You can add below command to check the file present or not in destination path..

Code:
CopyFilesInfo() {
    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"
      fi
    done
}

Let me know if you still have doubt..

For deleting entries of FileName, at the start of the script just
Code:
> $FileName

# 31  
Old 09-03-2012
Hi, you are right..I realized it some 3 4 minutes before..:P Check my earlier post for apology..Smilie

hmmm, how about the sed problem..??? from data(anything).list to data1.list conversion..Smilie

thanks
Smilie

Quote:
Originally Posted by pamu
Might be you have run this command thrice...Smilie

You can add below command to check the file present or not in destination path..

Code:
CopyFilesInfo() {
    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"
      fi
    done
}

Let me know if you still have doubt..
# 32  
Old 09-03-2012
Quote:
Originally Posted by nrjrasaxena

hmmm, how about the sed problem..??? from data(anything).list to data1.list conversion..Smilie
Try something this...

Code:
 sed -e 's/data?/data1/g'

# 33  
Old 09-03-2012
Nope, did not work..

Code:
 sed -e 's/data?/data1/g'

[/QUOTE]
# 34  
Old 09-03-2012
Quote:
Originally Posted by nrjrasaxena
Nope, did not work..
Opps...

Sorry i've done mistake there..Smilie

Try this....

Code:
 sed  's/adds[a-zA-Z0-9]/data1/g'

This User Gave Thanks to pamu For This Post:
# 35  
Old 09-03-2012
Thanks, worked fine..Smilie Smilie

---------- Post updated at 04:07 AM ---------- Previous update was at 03:57 AM ----------

Umm,
I am not sure..as the command is not working as part of my script [1]. I have defined them in function Initialize() .

I am running this script as
Code:
 ./Script batchjob

[1]
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/"
SOURCPATH=/uscms/home/pooja04/script/AnalysisCode/Code42012/v4/
CARD=card_Data2011AB_Zee_40GeV

FileName=DataFileName
SCRIPT=DataMC.sh
TEMPSCRIPT=temp.sh
CondorJob=Job_condor
#typeset -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 () {
    source /uscms/home/pooja04/.bashrc
  #   source /uscms/home/pooja04/ToBegin.sh
    cd /uscms_data/d3/pooja04/CMSSW_5_3_3_patch2/src/ElectroWeakAnalysis/MultiBosons/test
    eval `scram runtime -sh`
    cd $SOURCPATH
}

Initialize () {
    > $FileName
    { rm $CARD; sed -e "s/data[a-zA-Z0-9]/data1/g" > $CARD; } < $CARD
    { rm $CondorJob; sed -e "s/temp[a-zA-Z0-9]/temp0/g" > $CondorJob; } < $CondorJob
    echo "Initialize  the Values"
}

#To Copy the Files Inforamtion from the Destination Folder
CopyFilesInfo() {
    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
}

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

#For Submiting the batchjobs
SubmitBatchJob () {
    max=$FileId
    for (( k=0; k < $max ; ++k )) ; 
      do
      echo "SHELL JOB ================ $k ==============" 
      if [ $k == 0 ]; then
	  source $SCRIPT
      else
	  if [ $k > 0 ]; then
	      { rm $CARD; sed -e "s/data$k/data$((k+1))/g" > $CARD; } < $CARD
	      source $SCRIPT
	      echo "SUCCESFULLY DONE.."
	  else
	      if [ $k = $max ]; then
		  echo "TERMINATES.."
	      fi
	  fi
      fi
    done
}    


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

      if [ $k == 0 ]; then
	  cp $SCRIPT $TEMPSCRIPT
	  condor_submit $CondorJob
	  echo "Going To Sleep.."
	  sleep 10
	  { rm $CondorJob; sed -e "s/temp$k/temp$((k+1))/g" > $CondorJob; } < $CondorJob
	  rm $TEMPSCRIPT
	  exit 0
      else
	  if [ $k > 0 ]; then
	      { rm $CARD; sed -e "s/data$k/data$((k+1))/g" > $CARD; } < $CARD
	      cp $SCRIPT $TEMPSCRIPT 
	      condor_submit $CondorJob
	      echo "Going To Sleep.."
	      sleep 10
	      { rm $CondorJob; sed -e "s/temp$k/temp$((k+1))/g" > $CondorJob; } < $CondorJob
	      rm $TEMPSCRIPT
	      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  
    Initialize
    CopyFilesInfo
    DivideJobs
    SubmitBatchJob
    exit 0

elif [ "$1" = "condorjob" ]; then
    path
    Initialize
    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

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