- você não definiu a variável
rcps
- você definiu
scenarios
, mas usouscenario
Aqui está uma versão do seu script que corrige esses problemas e faz algumas outras melhorias:
- formatado com novas linhas extras e recuo alinhado para melhorar a legibilidade
- use matrizes em vez de cadeias separadas por espaço
- use
sed
uma vez em vez de várias vezes maistr
- aspas duplas de todas as variáveis
- aspas simples todas as cadeias fixas
- define uma variável (
$fname
) para manter o nome do arquivo construído (${station}_${gcm}_${scenario}
) em vez de reconstruí-lo toda vez que você usá-lo, o que é muito mais difícil de ler E muito propenso a erros de digitação.
#!/bin/bash
in_dir='/home/stevens/SUMARIO/regional_model/data/basin'
stations=(almourol alton cuntan eldeim farakka koulikoro lobith louth
olivenca stolb tangnaihai)
gcms=(gfdl-esm2m hadgem2-es ipsl-cm5a-lr miroc-esm-chem noresm1-m)
scenario='rcp8p5'
rcps=(a b c)
for station in "${stations[@]}" ; do
cd "${in_dir}/${station}"
for gcm in "${gcms[@]}"; do
for rcp in "${rcps[@]}" ; do
fname="${station}_${gcm}_${scenario}"
echo "replace datum: $fname"
sed -e 's/"datum"/"YEAR-MONTH-DAY"/g;
s/ 12:00:00//g;
s/-/;/g' "$fname" > "${fname}.csv"
done
done
done
Se você quiser substituir a string "datum"
por uma data real, terá que fazer algo como:
- defina
YMD=$(date +%Y-%m-%d)
junto com as outras variantes e matrizes - e reescreva o script
sed
desta forma:
sed -e 's/"datum"/"'"${YMD}"'"/g;
s/ 12:00:00//g;
s/-/;/g' "$fname" > "${fname}.csv"
BTW, se você realmente quis ter vários cenários, você terá que definir scenarios
como outro array e adicionar outro loop for scenario in "${scenarios[@]}" ; do ..... done