Функция Matlab fprint со сценарием GrADS

Я использую Matlab для печати небольшого текстового файла (temp_script.exec), который будет использоваться для запуска команд GrADS. Скрипт выглядит следующим образом:

'reinit'
'open temp_ctl.ctl'
'set lon -100 -80'
'set lat 20 30'
'define prc = var'
'set sdfwrite data_out.nc'
'sdfwrite prc'

Скрипт вызывается через cshell:

#!/bin/csh -f
grads -lbc << EOF
temp_script.exec
EOF
exit

Сценарий выполняется правильно, но вывод (data_out.nc) не создается. Как ни странно, если я редактирую его с помощью VI и заменяю первый символ — одинарную кавычку перед командой «reinit» — на другую одинарную кавычку, а затем повторно запускаю скрипт, данные генерируются правильно.

У меня вопрос, что может быть иначе? Скрипты выглядят одинаково в нескольких разных текстовых редакторах, но "модифицированный" скрипт (напечатанный) на 1 байт больше. Я использую функцию «fprintf» для создания одинарных кавычек в Matlab. Может проблема в этой функции?

Спасибо за чтение.


person FoxRyerson    schedule 10.07.2014    source источник


Ответы (1)


Чтобы убедиться, что файлы действительно одинаковы (сгенерированный и отредактированный с помощью vi):

od -c -t x1 temp_script.exec > temp_script.lis
od -c -t x1 vi_script.exec > vi_script.lis
diff exec_script.lis vi_script.lis

В начале файла может быть спецификация UNICODE или отсутствует новая строка в конце файла, что вызывает вашу проблему.

person fork2execve    schedule 11.01.2016