Matlab fprintf函数与GrADS脚本

时间:2014-07-10 16:02:48

标签: matlab csh grads

我正在使用Matlab打印一个用于运行GrADS命令的小文本文件(temp_script.exec)。该脚本如下所示:

'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编辑它并替换第一个字符 - 命令之前的单引号&#34; reinit&#34; - 通过键入另一个单引号,然后重新运行脚本,可以正确生成数据。

我的问题是,有什么不同?这些脚本在几个不同的文本编辑器中看起来相同,但是&#34;修改过的&#34;脚本(通过键入)大1个字节。我正在使用&#34; fprintf&#34;函数在Matlab中生成单引号。这个功能可能有问题吗?

感谢阅读。

1 个答案:

答案 0 :(得分:0)

查看文件是否真的相同(生成的文件和使用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 BOM,或文件末尾缺少换行符导致您的问题。