O for file in "ls *.nc"; do . . . ; done
executará o comando uma vez, com o argumento literal ls *.nc
- como você pode confirmar da seguinte forma:
$ ls *.nc
bar.nc foo.nc
$ for file in "ls *.nc"; do echo "$file" ; done
ls *.nc
Você presumivelmente pretendia uma substituição de comandos usando backticks no lugar de aspas duplas , mas isso seria uma má idéia 1 e é desnecessário, já que você já estão circulando os arquivos usando um shell (seguro, se citado) glob. Então:
for i in *.nc;
do
echo $i
cdo remapbil,target.grd "$i" > "tas_${i}_bil.nc"
done
Se você quiser remover e substituir a extensão no arquivo de saída, poderá alterar "tas_${i}_bil.nc"
para "tas_${i%.nc}_bil.nc"
- Por que não analisa
ls
?