claudiakparise
(usa Ubuntu)
Enviado em 25/03/2009 - 10:24h
Ola Pessoal, estou recém começando no linux e preciso fazer um script para automatizar as rodadas de um modelo de onda (WAM).
Por favor, algume poderia me ajudar???
Eu precisaria essencialmente do seguinte:
1) Tenho vários arquivos de vento (Ex:GDHNNMC20060518002006052100S.fct.T126L28) dentro de um diretório e esses arquivos são usados como entrada no modelo.
2) Esses arquivos devem ser renomeados ‘WIND_INPUT’ para entrar no modelo.
3) Tenho uma arquivo chamado 'WAM_User' que é o arquivo do usuário onde consta a data de inicio e fim da rodada, entre outras coisas, por exemplo:
C IDATEA IDATEE
C-------------- --------------
20060518030000 20060519030000
Essa data deverá ser mudada automaticamente, de 24h em 24h, correspondente ao dia do arquivo de vento que estiver entrando.
4) Rodar o modelo:
./CHIEF
RESUMINDO:
Preciso montar um scrip que:
1) pegue o arquivo de vento
2) renomeie esse arquivo como WIND_INPUT
3) mude a data no arquivo WAM_User, correspondente ao dia do arquivo do vento que estará entrando
4) rode o modelo
Ja tenho um script para isso, mas nao esta funcionando, se chama 'roda.sh', como segue abaixo:
#!/bin/ksh
#
# Call as: roda.sh <initial date> <number of model runs>
#
# DEFINITION OF DIRECTORIES
WAMDIR=${HOME}/parise/WAM4.5-sep2008/work_exec # wam exec directory
WINDDIR=${HOME}/parise/WAM4.5-sep2008/Ventos # wind files
#
# SOME PARAMETERS
IDATE=$1
NFILES=$2 # number of wind files = number of model runs
cont=1
#
# START LOOP
while ((${cont}<=${NFILES}))
do
#
# DESCRIPTION OF INDEXES USED IN THIS SCRIPT
# i: initial
# f: final
# n: new
year=`echo ${IDATE} | cut -c 1-4`
mon=`echo ${IDATE} | cut -c 5-6`
day=`echo ${IDATE} | cut -c 7-8`
ihr=`echo ${IDATE} | cut -c 9-10`
YEAR=$year
YEARf=$year
YEARn=$year
MONTH=$mon
MONTHf=$mon
MONTHn=$mon
DAY=$day
DAYf=$day
DAYn=$day
HOUR=$ihr
HOURn=$ihr
dataruni=0000000000
datarunf=0000000000
#
# CUT VARIABLES NAMES TO THE RIGHT LENGTH
typeset -Z2 MONTHf DAYf
typeset -Z4 YEARf
typeset -Z2 MONTH DAY HOUR
typeset -Z4 YEAR
typeset -Z2 HOURn
typeset -Z2 MONTHn DAYn
typeset -Z4 YEARn
typeset -Z10 dataruni datarunf
#
# DECIDE IF LEAP-YEAR
set -A cm xxx Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
let ydf=${YEAR}-2000
if ((${ydf}%4!=0))
then
set -A im 0 31 28 31 30 31 30 31 31 30 31 30 31
else
set -A im 0 31 29 31 30 31 30 31 31 30 31 30 31
fi
#
# COMPUTE DATES IN FILENAME
# SUM 3 TO INITIAL DAY
let "DAYf=${DAY}+3"
if ((${DAYf}>${im[${MONTH}]})); then
let DAYf=${DAYf}-${im[${MONTH}]}
if ((${DAYf}<${DAY})); then
let MONTHf=${MONTH}+1
if ((${MONTHf}>12)); then
let YEARf=${YEAR}+1
MONTHf=01
fi
fi
fi
#
YEAR1=`echo ${YEAR} | cut -c 3-4`
YEAR2=`echo ${YEARf} | cut -c 3-4`
datai=${YEAR}${MONTH}${DAY}${HOUR}
dataf=${YEARf}${MONTHf}${DAYf}${HOUR}
dataruni=${YEAR1}${MONTH}${DAY}${HOUR}0000
datarunf=${YEAR2}${MONTHf}${DAYf}${HOUR}0000
#
# TO RUN THE WAVE MODEL
#
# RENOMEIA O VENTO PARA WIND_INPUT
arq="GDHNNMC${datai}${dataf}S.fct.T126L28"
mv arq WIND_INPUT
#
# LINK THE WIND FILE TO THE WIND_INPUT FILE
ln -s ${WINDDIR}/${arq} WIND_INPUT
#
# EDIT THE WAM_User FILE
sed -e '18s/^.*$/ '$dataruni' '$datarunf'/' < WAM_User.tpl > WAM_User
#
# RUN THE WAV MODEL
./CHIEF
# *************************************************************************
Obrigada,
Claudia