确定返回参数的确切内容。

在一些操作系统(如Ubuntu、Debian等),cal命令将返回当前日期的日历并突出显示今天的日期。而cal -h则会关闭今天的日期突出显示:

screenshot

但在一些操作系统(如Arch Linux)中,-h参数将显示日历的帮助信息。我正在用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参数?

点赞
用户869951
用户869951

执行 cal -h 命令并分析输出,寻找单词“help”。如果找到该单词,则 -h 表示“帮助”。如果没找到该单词,则很可能是表示突出显示,但不能确定(这种方式在所有 Linux 发行版上都能正常工作)。很可能您需要一些代码来读取标识平台的环境变量,以便您可以发出正确的命令,并依靠不同 Linux 发行版的用户报告默认失败并向您报告正确的命令行参数。另一方面,您可以将支持限制为仅限于您可以访问的平台。或者这两种方法的组合。

2014-10-26 19:45:45
用户1661465
用户1661465

另一种解决方案。

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

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

2014-10-26 19:48:22