通过Cygwin的运行shell脚本在Windows(Running a shell script

2019-08-18 11:54发布

我有一堆用于Linux机器上运行shell脚本。 现在,我们已经切换到Windows,我需要有运行这些脚本。 我有Cygwin的安装,但有什么办法,使使用Cygwin的脚本运行,但呼叫从Windows批量制造

Answer 1:

当然。 在我(相当香草)Cygwin的设置, bash是在c:\cygwin\bin这样我就可以运行bash脚本(说testit.sh使用像这样的命令Windows批处理文件):

C:\cygwin\bin\bash testit.sh

...其可以被包括在.bat一样容易文件,因为它可以在命令行键入,并且具有相同效果。



Answer 2:

还有一两件事-如果你在编辑某些Windows的文本编辑器,它产生的shell脚本\r\n行结束,Cygwin的庆典不会接受那些\r 。 只要运行dos2unix testit.sh执行脚本前:

C:\cygwin\bin\dos2unix testit.sh
C:\cygwin\bin\bash testit.sh


Answer 3:

如果你有机会到记事本+ +在Windows编辑器有一个功能,让你可以轻松地解决这个问题得到:

  1. 打开竟然放弃在记事本+ +错误的文件。
  2. 在“编辑”菜单下进入,选择“EOL转换”
  3. 有一个选项有“UNIX / OSX格式。” 选择该选项。
  4. 重新保存文件。

我这样做,它解决了我的问题。

希望这可以帮助!

更多详情http://danieladeniji.wordpress.com/2013/03/07/microsoft-windows-cygwin-error-r-command-not-found/



Answer 4:

只是想补充一点,你可以做到这一点申请DOS2UNIX的修复所有文件的目录下,因为它救了我的时候,我们不得不“修复”一堆我们的脚本的时间堆。

find . -type f -exec dos2unix.exe {} \;

我会做它作为罗马的答案评论,但我没有访问评论呢。



Answer 5:

如果你不介意的话总是包括对脚本文件名.SH,那么你能保持Cygwin和UNIX(的MacBook)相同的脚本。

为了显示:
1.始终包括.SH你的脚本文件名,例如,test1.sh
2. test1.sh看起来像以下为例:
#!/bin/bash echo '$0 = ' $0 echo '$1 = ' $1 filepath=$1 3.在Windows上使用Cygwin,你键入”test1.sh“运行
4.在Unix,你还可以键入“test1.sh”运行


注:在Windows上,您需要使用文件资源管理器做一次如下:
1.打开文件浏览器
2.在文件上用.sh扩展单击鼠标右键,像test1.sh
3.打开方式 - >选择sh.exe
在此之后,您的Windows 10会记住与sh.exe执行所有.SH文件。

注意:使用这种方法,你不需要使用bash前面加上你的脚本文件名来运行



Answer 6:

现有的答案似乎都在DOS控制台窗口运行此脚本。

这是可以接受的,但例如意味着颜色代码(改变文字颜色)不工作,而是得到打印出来,因为它们是:

没有项目“[032mGroovy [0米”

我发现这个解决方案前一段时间,所以我不知道是否mintty.exe是标准Cygwin的工具或者是否需要运行setup程序来得到它,但我像这样运行:

D:\apps\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico  bash.exe .\myShellScript.sh

......这使脚本在Cygwin的BASH控制台,而不是在Windows DOS控制台上运行。



文章来源: Running a shell script through Cygwin on Windows