executa um script de shell no linux para processar múltiplos arquivos .grb

0

Eu tenho o seguinte script de shell (myscript.sh) para o processamento de vários arquivos .grb para converter para o formato .nc (netCDF). Eu coloquei isso na mesma pasta onde os arquivos .grb estão localizados e executei "myscript.sh" como abaixo.

Lista de arquivos .grb na pasta "Binary" são como abaixo:

NLDAS_VIC0125_H.A19901231.0000.002.grb
NLDAS_VIC0125_H.A19901231.0100.002.grb
.
.
NLDAS_VIC0125_H.A19901231.0500.002.grb 

~Downloads/Binary$ bash myscript.sh

#!/bin/bash
for i in 000 100 200 300 400 500
cdo -f nc copy NLDAS_VIC0125_H.A19901231.0{i}.002.grb NLDAS_VIC0125_H.A19901231.0{i}.002.nc
done

Meu script me dá um erro:

script.sh: line 3: syntax error near unexpected token 'cdo'
script.sh: line 3: 'cdo -f nc copy NLDAS_VIC0125_H.A19901231.0{i}.002.grb NLDAS_VIC0125_H.A19901231.0{i}.002.nc'

Alguém pode me ajudar a corrigir isso?

Qualquer ajuda é apreciada.

Obrigado,

    
por user3408139 29.06.2017 / 01:27

1 resposta

1

Seu loop está faltando um do e suas variáveis estão perdendo sua desagregação $ :

#!/bin/bash
for i in 000 100 200 300 400 500
do
  cdo -f nc copy NLDAS_VIC0125_H.A19901231.0${i}.002.grb NLDAS_VIC0125_H.A19901231.0${i}.002.nc
done

No entanto, se você quiser fazer o loop de todos os arquivos .grb no diretório, seria mais simples usar um curinga * e derivar o nome do arquivo nc do .grb um removendo e substituindo sua extensão

#!/bin/bash
for file in *.grb
do
  cdo -f nc copy "$file" "${file%.grb}.nc"
done

Além disso, é uma prática melhor tornar o script executável e simplesmente chamá-lo pelo nome

chmod +x myscript.sh

então

./myscript.sh
    
por steeldriver 29.06.2017 / 01:48