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

weh*_*lae 7 bash shell command-line cross-platform

我注意到Windows 7能够执行.sh文件,就好像它们是.bat文件一样.这让我想知道是否有可能写一个.sh文件,以便它可以在Windows Linux中执行(比方说bash).

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

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

Bif*_*fen 12

你可以用这个:

rem(){ :;};rem '
@goto b
';echo sh;exit
:b
@echo batch
Run Code Online (Sandbox Code Playgroud)

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

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

  • 您可以将第一行修改为 `@rem(){ :;};@rem '` 以使该行在 Windows 上保持静默。这里提出了类似的想法https://danq.me/2022/06/13/bash-batch/ (2认同)