确定究竟返回参数的内容

时间:2014-10-26 18:30:43

标签: linux lua readline bsd

在某些操作系统中,如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

2 个答案:

答案 0 :(得分:1)

执行cal -h并解析单词“help”的输出。如果找到该单词,则“-h”表示帮助。如果没有找到单词,那么它很可能意味着突出显示但是没有确定的知道方式(这种方式适用于所有类型的Linux)。很可能您需要一些代码来读取标识平台的环境var,以便您可以发出正确的命令并依赖不同Linux风格的用户在默认失败时报告并向您报告正确的命令行参数。 OTOH你可以将supprt限制为只有你有权访问的平台。或者这些方法的组合。

答案 1 :(得分:0)

另一种解决方案。

Arch Linux cal-V个参数,它返回UTIL_LINUX_VERSION。 在这种情况下,在Arch Linux中调用cal -V后,您可能会收到退出代码0,但Ubuntu没有-V param并返回64:)

因此,如果cal -V返回退出代码0,则-h返回帮助