AWK:找出是否在Windows上运行

时间:2012-08-19 09:51:44

标签: windows awk

我怎样才能知道我是否在Windows上?

我需要在AWK中执行特定于操作系统的命令。

具体来说,我想 Windows上的system("mkdir DIR")和 其他地方system("mkdir -p DIR")(Unix / Linux / OS X / BSD), 以递归方式创建目录。

2 个答案:

答案 0 :(得分:3)

这是Birei的稍微优化版本。

OS环境var仅在(并且应该)总是在Windows上指定,并且它应该总是包含某种形式的字符串“windows”,例如“Windows_NT”。

awk '
    BEGIN {
        is_windows = 0;
        if (index(tolower(ENVIRON["OS"]), "windows") > 0) {
            is_windows = 1;
        }
    }
    ...
' input-file

感谢来自#awk和Birei的人!

答案 1 :(得分:2)

我无法测试此答案,因为我无法访问Windows系统,但请尝试ENVIRON变量。 Linux和Unix路径用:分隔,而Windows路径用;分隔。您可以查看它,例如:

awk '
    BEGIN {
        is_windows = 0;
        if ( index( ENVIRON["PATH"], ";" ) > 0 ) {
            is_windows = 1;
        }
    }
    ...
' input-file

如果Windows路径中只有一个目录,则可能会失败,但我希望您明白这一点。也许几个环境变量或类似的东西的组合可能更有帮助。