跨平台命令行脚本(例如 .bat 和 .sh)

Cross-platform command line script (e.g. .bat and .sh)

我注意到 Windows 7 可以像执行 .bat 文件一样执行 .sh 文件。这让我想知道是否可以编写一个 .sh 文件,使其可以在 Windows Linux 中执行(假设 bash ).

我想到的第一件事是制作一个 if 语句,这样 Windows 和 Ubuntu 可以处理它并跳转到相应的块以执行特定于平台的命令。 这是怎么做到的?

注意:我知道这不是好的做法。我还知道像 Python 这样的脚本语言比混合语法的命令行脚本更适合解决这个问题。我只是好奇...

AFAIK,您不能直接从 Windows' cmd.exe 运行 .sh 文件。为此,您需要一个 *nix 仿真层来 运行 shell。查看 Cygwin or Msys/MinGW

你可以使用这个:

rem(){ :;};rem '
@goto b
';echo sh;exit
:b
@echo batch

它是有效的 shell 脚本和批处理,并将根据它的方式执行不同的块 运行。

修改 echo@echo 行以执行您想要的操作。