Не удалось загрузиться с внешнего жесткого диска [дубликат]

  1. вы не определили переменную rcps
  2. вы определили scenarios, но использовали scenario

Вот версия вашего сценария, которая исправляет эти проблемы и делает несколько других улучшений:

  • отформатирована с дополнительными новыми строками и выровненным отступом для улучшения читабельности
  • использует массивы, а не строки, разделенные пробелами
  • использует sed один раз, а не несколько раз плюс tr
  • двойные- кавычки все переменные
  • одинарные кавычки все фиксированные строки
  • определяет переменную ($fname) для хранения построенного имени файла (${station}_${gcm}_${scenario}) вместо того, чтобы перестраивать его каждый раз, когда вы его используете, что гораздо сложнее для чтения и чревато опечатками.
#!/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

Если вы хотите заменить строку "datum" на реальную дату, вам придется сделать что-то вроде:

  1. define YMD=$(date+%Y-%m-%d) вместе с другими переменными и массивами
  2. и переписать скрипт sed следующим образом:
      sed -e 's/"datum"/"'"${YMD}"'"/g;
              s/ 12:00:00//g;
              s/-/;/g' "$fname" > "${fname}.csv"

BTW, если вы действительно хотели иметь несколько сценариев, вам придется определить scenarios как еще один массив и добавить еще один цикл for scenario in "${scenarios[@]}" ; do . .... done

1
19.06.2014, 18:29
0 ответов

Теги

Похожие вопросы