我怎样才能知道我是否在Windows上?
我需要在AWK中执行特定于操作系统的命令。
具体来说,我想
Windows上的system("mkdir DIR")
和
其他地方system("mkdir -p DIR")
(Unix / Linux / OS X / BSD),
以递归方式创建目录。
答案 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
路径中只有一个目录,则可能会失败,但我希望您明白这一点。也许几个环境变量或类似的东西的组合可能更有帮助。