我有一堆用于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编辑器有一个功能,让你可以轻松地解决这个问题得到:
- 打开竟然放弃在记事本+ +错误的文件。
- 在“编辑”菜单下进入,选择“EOL转换”
- 有一个选项有“UNIX / OSX格式。” 选择该选项。
- 重新保存文件。
我这样做,它解决了我的问题。
希望这可以帮助!
更多详情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看起来像以下为例:
3.在Windows上使用Cygwin,你键入”test1.sh“运行 #!/bin/bash echo '$0 = ' $0 echo '$1 = ' $1 filepath=$1
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控制台上运行。