Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com script


Claudia Parise

Pergunta

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

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...