我有一本食谱,它以 cookbook_file 资源的形式提供许多 bash shell 脚本。出于某种原因,当我运行 chef-client 时,bash shell 脚本会突然获得一个回车符作为最后一个字符。在我的 Windows 机器上,shell 脚本具有 Linux 样式的行尾,而 .gitattributes 文件包含一个条目,指示 .sh 文件应使用 Linux 样式的行尾上传/下载。
我已经确认这个不需要的回车符出现在“berks upload”和“chef-client”之间的某个时间。
最终,这会阻止 bash 执行 bash 脚本。
我该如何防止这种情况发生?
答案1
看来 Chef 承认它在处理行尾时非常糟糕,并且没有提供任何方法来指定如何处理它们[1]。
为了解决这个问题,在 cookbook 中的所有 bash 脚本中都添加了退出语句,后面跟一个新行。这样,脚本就可以在 bash 遇到错误字符之前退出。