Ir para conteúdo
Fórum Script Brasil

Claudia Parise

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Claudia Parise

Perfil

  • Gender
    Female
  • Location
    Porto Alegre

Claudia Parise's Achievements

0

Reputação

  1. 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': #!/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> ./roda.sh 2006051800 3 Porem não obtive resultado. alguém pode me dar uma ajuda? Agradeceria muito. Claudia Parise
×
×
  • Criar Novo...