我正在使用以下Cygwin命令从DOS LF行尾格式Windows CRLF格式转换具有某些文件扩展名的文件。此命令可从Cygwin bash提示符中使用:
cygwin$ find . \( -name '*.php' -o -name '*.phph' -o -name '*.js' -o -name '*.css' -o -name '*.html' \) -exec unix2dos {} \;
我想从shell脚本运行此命令,因此我创建了一个名为git-unix2dos-web.sh
的以下文件,并保存到我的路径目录中:
#!/bin/bash
find . \( -name '*.php' -o -name '*.phph' -o -name '*.js' -o -name '*.css' -o -name '*.html' \) -exec unix2dos {} \;
运行此命令时,出现以下错误
cygwin$ $ git-unix2dos-web.sh
find: missing argument to `-exec'
我不明白为什么该命令有效时为什么会从命令行直接运行时找到此错误。
更新:
我如下更改了shell脚本:
#!/bin/bash
/usr/bin/find . \( -name '*.php' -o -name '*.phph' -o -name '*.js' -o -name '*.css' -o -name '*.html' \) -exec unix2dos {} \;
,现在它就像从cygwin bash提示符下一样工作。我不能说我理解为什么此更改可以修复错误。有人可以提供解释吗?