3

我正在使用 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 中生成单引号。该功能可能有问题吗?

谢谢阅读。

4

1 回答 1

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,或者文件末尾缺少换行符会导致您的问题。

于 2016-01-11T17:27:20.233 回答