Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何确定我是否在 Windows 上?
我需要在 AWK 中执行特定于操作系统的命令。
具体来说,我想 system("mkdir DIR")在 Windows 和 system("mkdir -p DIR")其他任何地方(Unix/Linux/OS X/BSD)上递归地创建一个目录。
system("mkdir DIR")
system("mkdir -p DIR")
这是Birei的一个稍微优化的版本。
环境变量只在OS并且(假定)总是在 windows 上指定,并且它应该总是包含某种形式的字符串“windows”,例如“Windows_NT”。
OS
awk ' BEGIN { is_windows = 0; if (index(tolower(ENVIRON["OS"]), "windows") > 0) { is_windows = 1; } } ... ' input-file
感谢#awk 和Birei的伙计们!
我无法测试此答案,因为我无权访问Windows系统,但请尝试使用该ENVIRON变量。Linux 和 Unix 路径用 分隔,:而Windows路径用 . 分隔;。你可以检查一下,比如:
Windows
ENVIRON
:
;
awk ' BEGIN { is_windows = 0; if ( index( ENVIRON["PATH"], ";" ) > 0 ) { is_windows = 1; } } ... ' input-file
如果路径中只有一个目录,这可能会失败Windows,但我希望你明白这一点。也许几个环境变量或类似的组合可能会更有帮助。