2014-10-26 111 views
0

在某些操作系統中,如Ubuntu,Debian等cal返回當前日曆並突出顯示今天。而cal -h關閉高亮今天:確定究竟返回什麼參數

screenshot

但在一些操作系統,像Arch Linux的-h PARAM顯示日曆的幫助。

我做和Lua一個小腳本:

function foo() 
    local f, err = io.popen('cal -h', 'r') 
    if f then 
     local s = f:read("*all") 
     f:close() 
     return s 
    else 
     return err 
    end 
end 

我的主要問題 - 我該如何判斷到底是什麼具體返回的參數-h

+0

如上所述,您可以檢查程序退出狀態代碼,該代碼在Ubuntu顯示幫助時返回64,但在arch下使0返回不可行 – Leon 2014-10-26 18:45:57

回答

1

執行cal -h並解析單詞「help」的輸出。如果找到該單詞,則「-h」用於提供幫助。如果沒有找到單詞,它可能意味着高亮顯示,但是沒有確定的方式知道(這種方式適用於所有類型的Linux)。很可能您需要一些代碼來讀取標識平臺的環境變量,以便您可以發出正確的命令,並依賴不同Linux版本的用戶在默認失敗時報告並向您報告正確的命令行參數。 OTOH你可以限制只支持你有權訪問的平臺。或者這些方法的組合。

0

另一種解決方案。

Arch Linux cal-V param,它返回UTIL_LINUX_VERSION。 這這種情況下,調用cal -V在Arch Linux的之後,你可能會收到退出碼0,但是Ubuntu的沒有-V PARAM並返回64 :)

所以,如果cal -V返回退出代碼0,-h回報幫助