2014-10-26 80 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回报帮助