2

如何确定我是否在 Windows 上?

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

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

4

2 回答 2

3

这是Birei的一个稍微优化的版本。

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

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

感谢#awk 和Birei的伙计们!

于 2012-08-19T19:52:28.340 回答
2

我无法测试此答案,因为我无权访问Windows系统,但请尝试使用该ENVIRON变量。Linux 和 Unix 路径用 分隔,:Windows路径用 . 分隔;。你可以检查一下,比如:

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

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

于 2012-08-19T10:32:16.443 回答