У меня есть следующий сценарий оболочки (myscript.sh) для обработки нескольких файлов .grb для преобразования в формат .nc (netCDF). Я разместил его в той же папке, где находятся файлы .grb, и запустил «myscript.sh», как показано ниже.
Список файлов .grb в папке «Binary» выглядит следующим образом:
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
Мой скрипт дает мне ошибку:
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'
Can кто-нибудь поможет мне исправить это?
Любая помощь приветствуется.
Спасибо,
В вашем цикле отсутствует do, и ваши переменные пропускают их удаление ссылок $:
#!/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
Однако, если вы хотите перебрать все файлы .grb в каталоге было бы проще использовать подстановочный символ * и получить nc имя файла из .grb, удалив и заменив его расширение
#!/bin/bash
for file in *.grb
do
cdo -f nc copy "$file" "${file%.grb}.nc"
done
. Также лучше сделать скрипт исполняемый файл и просто назовите его по имени
chmod +x myscript.sh
, затем
./myscript.sh
В вашем цикле отсутствует do, и ваши переменные пропускают их удаление ссылок $:
#!/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
Однако, если вы хотите перебрать все файлы .grb в каталоге было бы проще использовать подстановочный символ * и получить nc имя файла из .grb, удалив и заменив его расширение
#!/bin/bash
for file in *.grb
do
cdo -f nc copy "$file" "${file%.grb}.nc"
done
. Также лучше сделать скрипт исполняемый файл и просто назовите его по имени
chmod +x myscript.sh
, затем
./myscript.sh
В вашем цикле отсутствует do, и ваши переменные пропускают их удаление ссылок $:
#!/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
Однако, если вы хотите перебрать все файлы .grb в каталоге было бы проще использовать подстановочный символ * и получить nc имя файла из .grb, удалив и заменив его расширение
#!/bin/bash
for file in *.grb
do
cdo -f nc copy "$file" "${file%.grb}.nc"
done
. Также лучше сделать скрипт исполняемый файл и просто назовите его по имени
chmod +x myscript.sh
, затем
./myscript.sh