Então eu tenho meu diretório de entrada, diretório de saída e lista de arquivos:
#!/bin/bash ## shell type
dir_in=('/Users/dossa013/data/inland-data/input/')
dir_out=('/Volumes/Macintosh HD 2/data/cmip5/cru/')
files=('/Users/dossa013/data/inland-data/input/*ts*')
em que a variável "files" contém o seguinte:
cld.cru_ts3.22.1901.2013.nc
prec.cru_ts3.22.1901.2013.nc
rh.cru_ts3.22.1901.2013.nc
temp.cru_ts3.22.1901.2013.nc
trange.cru_ts3.22.1901.2013.nc
wetd.cru_ts3.22.1901.2013.nc
O que eu preciso fazer é executar um comando que requer como argumentos um arquivo de entrada e um arquivo de saída. No meu caso, o diretório onde os arquivos de entrada estão localizados é diferente do diretório dos arquivos de saída.
A ressalva é: ao especificar o arquivo de saída, eu gostaria de acrescentar a palavra "croppped" entre o final do nome do arquivo original e a extensão.
Esse loop não funciona:
for f in ${files[@]}; do ## loop over files
echo cdo sellonlatbox "${dir_in}"${f##*/} "${dir_out}"$(printf '%s\n' "${f##*/.nc}_cropped.nc")
done
Idealmente, o resultado seria:
cdo sellonlatbox /Users/dossa013/data/inland-data/input/prec.cru_ts3.22.1901.2013.nc /Volumes/Macintosh HD 2/data/cmip5/cru/prec.cru_ts3.22.1901.2013_cropped.nc
Onde está o meu erro aqui?