在输出中随机接收警告

时间:2014-01-16 23:38:01

标签: datetime terminal maya mel

我已经创建了一个终端脚本,可以在20台不同的机器上控制我的渲染,它运行得很好,无论如何随机,都会打印出这个警告:

Warning: file: /Volumes/raid/farm_script/procedures.mel line 63: Converting string "" to an int value of 0.

第63行,它指的是以下函数中的这一行$time = system("date +%s") ;

global proc int getUnixTimestamp() {
    int $time = 0;
    $time = `system("date +%s")`;
    return $time;
}

让我们说,30帧中有1帧打印出上面的警告,但看到该命令刚刚获得系统日期,为什么它会像那样随机?

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

干杯

1 个答案:

答案 0 :(得分:0)

我得到的最好答案是:

global proc int getUnixTimestamp() {
    int $time = 0;
    string $timestr = `system("date +%s")`;
    if (size($timestr)) {
        $time = $timestr;
    }
    return $time;
}

$timestr不是空字符串的情况下,它只会尝试将字符串$time强制转换为int $timestr。 (空字符串是导致警告的原因。)否则它只返回0

如果您需要使用该值执行某些 important ,而不是仅将其打印用于记录,那么我不禁给您提供以下替代方案:

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;
}

在放弃前最多运行系统调用10次。它可能不会连续10次失败,但如果确实如此,那么它将返回0