使用shell批處理進行不同參數運算

<pre name="code" class="plain">#! /bin/sh

Runjob(){

  var1=$1
  folder0="O`printf %0.2f $var1` " 
  filelist="./Dat/grd_xy.grd ./Dat/Ivalue.plt ./Dat/ruvwt.p3d ./Dat/PSE_ZYM.inp"
  folder1="output"
  fileinp="PSE_ZYM.inp"
  varkey="Basis_ome_bat"
  jobcmd1="/localhome/zcb/20151217/Dat/Init_PSE.out >initial.log"
  jobcmd2="/localhome/zcb/20151217/Dat/PSE_v1.2_ext.out >PSE_run.log &"

  #Make dir folder0  ;  ./ -> ./folder0 
  CMD="mkdir  $folder0 ; cp $filelist $folder0 ; cd $folder0 ; mkdir  $folder1"
  eval $CMD
  # awk 'pattern {action} pattern {action}'
  # '$varkey','$var1' when use variables of the shell '' is neccesary 
  awk '/'$varkey'/{$3=“'$var1'”}1{print $0}' $fileinp > tmp ; mv tmp $fileinp
  echo $PWD	
  eval $jobcmd1
  eval $jobcmd2

  cd ..
}

for var in `seq $1 $2 $3` 
do 
Runjob $var |tee -a run_jobs.log
done



</pre><pre name="code" class="plain"><pre name="code" class="plain">collectfile(){
  
  #folder name	
  var1=$1	
  folder0=$2
  filename0="Amp_PSE.plt"
  filename1="Bang_Amp_PSE.plt"
  info=$var1

  	

  
  #cd to output folder
  cd $var1

  # check  output folder 
  if [ -d "output" ] ;then
  cd "output" 

  #check if output file is ready
  if [ -f $filename0 ] ;then
      CMD="cp $filename0 $folder0/$var1-$filename0"
	eval $CMD
	info="$info Done..."
  fi

  if [ -f $filename1 ] ;then 
	CMD="cp $filename1 $folder0/$var1-$filename0"
	eval $CMD
	info="$info Bang..."
  fi

  cd ..

  fi
  cd ..
  	echo $info

}

folder0="/localhome/zcb/PSE_calc/Amp_check"
#echo $folder0
CMD="mkdir -p $folder0"
eval $CMD
for var in `ls -d */` 
do 
	
	var=${var%?} #cut the last character '/'
	collectfile $var $folder0 |tee -a $folder0/collect.log
done



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章