Datetime 在输出中随机接收警告

Datetime 在输出中随机接收警告,datetime,terminal,maya,mel,Datetime,Terminal,Maya,Mel,我已经创建了一个终端脚本,它可以在20台不同的机器上控制我的渲染,它工作得很好,但是它会随机打印出以下警告: 警告:文件:/Volumes/raid/farm\u script/procedures.mel第63行:将字符串“”转换为int值0。 它所指的第63行是这一行$time=系统(“日期+%s”)在下面的函数中 global proc int getUnixTimestamp() { int $time = 0; $time = `system("date +%s")`;

我已经创建了一个终端脚本,它可以在20台不同的机器上控制我的渲染,它工作得很好,但是它会随机打印出以下警告:

警告:文件:/Volumes/raid/farm\u script/procedures.mel第63行:将字符串“”转换为int值0。

它所指的第63行是这一行
$time=
系统(“日期+%s”)
在下面的函数中

global proc int getUnixTimestamp() {
    int $time = 0;
    $time = `system("date +%s")`;
    return $time;
}
比方说,每30帧中就有1帧打印出上述警告,但鉴于该命令只是获取系统日期,为什么会是随机的呢

我正在运行上面的代码,顺便说一句,maya在提示模式下运行


干杯

我得到的最好答案是:

global proc int getUnixTimestamp() {
    int $time = 0;
    string $timestr = `system("date +%s")`;
    if (size($timestr)) {
        $time = $timestr;
    }
    return $time;
}
只有在
$timestr
不是空字符串的情况下,它才会尝试将字符串
$timestr
强制为int
$time
。(空字符串是导致警告的原因。)否则它只返回
0

如果您需要对该值执行一些重要的操作,而不仅仅是为了记录而打印它,那么我不寒而栗地向您提供以下替代方案:

global proc int getUnixTimestamp() {
    int $time = 0;
    string $timestr;
    for (int $i=0; $i<10; $i++) {
        $timestr = `system("date +%s")`;
        if (size($timestr)) {
            $time = $timestr;
            return $time;
        }
    }
    return $time;
}
global proc int getUnixTimestamp(){
int$time=0;
字符串$timestr;

对于(int$i=0;$iI无法复制它。如果你在终端上运行
date+%s
一百次,它会给你错误的输出吗?我不相信date命令是这里的问题,我相信这是我调用它和存储它的方式,但我不知道如何修复它,但在终端上不运行
date+%s
100次esn无法复制该问题。您可以在Maya中循环运行该代码100次吗?我无法从Maya中复制它,它仅在提示模式下发生。