2014-01-16 73 views
1

隨機警告我已經創建了一個端腳本,它控制着我的渲染上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; 
} 

比方說,1 30幀打印出上述警告,但看到該命令是剛開的系統日期,它爲什麼會是隨機的這樣呢?

我正在運行上面的代碼,從maya運行在-prompt模式的方式。

乾杯

+0

我無法複製它。如果你只是在終端上運行'date +%s'一百次,它會給你錯誤的輸出嗎? – mhlester

+0

我不相信日期命令是這裏的問題,我相信這是我調用它的方式,並存儲它,但我不知道如何解決它,但沒有運行'日期+%s'終端100次不會重現此問題。 –

+0

您可以在Maya中循環運行該代碼100次嗎? – mhlester

回答

0

最佳答案我是這樣的:

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

它只是試圖將字符串$timestr強制爲int $time的情況下$timestr是不是空字符串。 (空字符串是導致警告的原因。)否則,它只返回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; 
} 

它運行的系統調用多達10個放棄之前的時間。它可能不會連續失敗10次,但如果是這樣,那麼它將返回0