Matlab fopen命令响应字符串但不是变量等于相同的字符串

时间:2011-04-01 17:45:57

标签: matlab io fopen

我想知道是否有人可以通过Matlab fopen命令解释以下问题:

>> [stat myjob] = unix('echo $PBS_NODEFILE'); % gets PBS file name with allocated nodes  
>> myjob

myjob =

/opt/torque/aux//66058.crunch.local


>> fid = fopen('/opt/torque/aux//66058.crunch.local')

fid =

     3

>> fgetl(fid)

ans =

compute-9-2

>> fclose(fid);

我需要节点的名称来控制脚本中的某些后续决策。如果我在一个交互式的PBS工作中,上述工作可以工作,但在大多数情况下我需要在没有干预的情况下启动这些工作。当我尝试通过存储的文件名执行此操作时:

>> fid = fopen(myjob) % returns invalid                               

fid =

    -1

>> fgetl(fid)                                        
??? Error using ==> fgetl at 44
Invalid file identifier.  Use fopen to generate a valid file identifier.

为什么,当我直接输入存储在myjob中的值时,我会得到一个有效的标识符,但是当我放入myjob时它会失败吗?

谢谢, 安德鲁

1 个答案:

答案 0 :(得分:3)

试试这个:

fid = fopen(deblank(myjob));

查看上面格式化输出的方式,在显示myjob的值后会出现一条额外的空行,这表示字符串末尾可能会出现换行符。此换行符将导致文件名无法识别,因此您可以从函数DEBLANK的字符串中删除任何这样的尾随空格(或者您可以删除尾随的前导空格。函数STRTRIM)。

相关问题