Criei um script em bash que essencialmente faz 3 procedimentos em loop:
1. Utiliza um arquivo de vento
2. Executa CHIEF
3. Atualiza uma data:
Ou seja, eu tenho arquivos de vento (exemplo: GDHNNMC20060518002006052100S.fct.T126L28) na pasta '${HOME}/parise/WAM4.5-sep2008/Ventos' que serão renomeados para 'WIND_INPUT' e o comando 'CHIEF' será executado.
Após isso, a data contida no nome do arquivo do vento deverá ser atualizada para uma segunda rodada e assim por diante.
Script se chama 'roda.sh':
#!/bin/ksh -x
#
# Call as roda.sh <initial date> <number of model runs>
#
# Porto Alegre, October 2008
#
# 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
#
# Initialize variables
#
# 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
#
let DAYf=${DAY}+3 # sum 3 to initial day
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
#
# core of the loop; commands **********************************************
#
arq="GDHNNMC${datai}${dataf}S.fct.T126L28"
rm -f WIND_INPUT
ln -s ${WINDDIR}/${arq} WIND_INPUT # link the wind file to the file WIND_INPUT
sed -e '18s/^.*$/ '$dataruni' '$datarunf'/' < WAM_User.tpl > WAM_User # edit the WAM_User file.
./CHIEF # run the wave model
#
# Comment out the following lines if you wish to keep the intermediate WAM output files
#
if ((${cont}<${NFILES})); then
rm -f totalsea${datai}*
fi
# *************************************************************************
#
# increment dates and the variable cont
#
let HOURn=${HOUR}+24
if ((${HOURn}==24)); then
HOURn=00
let DAYn=${DAY}+1
if ((${DAYn}>${im[${MONTH}]})); then
echo ${DAY} ${DAYn}
let DAYn=${DAYn}-${im[${MONTH}]}
if ((${DAYn}<${DAY})); then
let MONTHn=${MONTH}+1
if ((${MONTHn}>12)); then
let YEARn=${YEAR}+1
MONTHn = 01
fi
fi
fi
fi
IDATE=${YEARn}${MONTHn}${DAYn}${HOURn}
let cont=${cont}+1
#
# end of loop
#
done
E o script é chamado da seguinte maneira:
# Call as roda.sh <initial date> <number of model runs>
Pergunta
Claudia Parise
Ola Pessoal,
Sou uma iniciante no linux e preciso de ajuda.
Criei um script em bash que essencialmente faz 3 procedimentos em loop:
1. Utiliza um arquivo de vento
2. Executa CHIEF
3. Atualiza uma data:
Ou seja, eu tenho arquivos de vento (exemplo: GDHNNMC20060518002006052100S.fct.T126L28) na pasta '${HOME}/parise/WAM4.5-sep2008/Ventos' que serão renomeados para 'WIND_INPUT' e o comando 'CHIEF' será executado.
Após isso, a data contida no nome do arquivo do vento deverá ser atualizada para uma segunda rodada e assim por diante.
Script se chama 'roda.sh':
E o script é chamado da seguinte maneira:
# Call as roda.sh <initial date> <number of model runs>
./roda.sh 2006051800 3
Porem não obtive resultado.
alguém pode me dar uma ajuda?
Agradeceria muito.
Claudia Parise
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.