bash - 如何在 Google Cloud Build 步骤中使用之前从 bash 脚本文件中删除所有 CR (\r) 字符?
问题描述
我的cloudbuild.yaml
文件中有一个步骤可以处理 Ubuntu 映像中的 bash 脚本文件。如果文件在 Linux 中编辑它工作得很好,但如果在 Windows 中编辑它会失败,因为 Windows 文本编辑器通常使用 CRLF 处理 EOL,而不是 LF。
- name: 'ubuntu'
args: ['bash', './my-script.sh']
脚本中的命令之一创建my-folder
. 我希望为每个构建创建该文件夹,但是当最后一次在 Windows 中编辑脚本时,它会失败并显示以下消息(请注意\r
EOL):
mkdir: 无法创建目录 './my-folder/\r': 没有这样的文件或目录
我该如何改进cloudbuild.yaml
才能摆脱这种情况?
解决方案
假设这是 Ansible,您可以使用该shell
模块将文件转换为 unix 格式。请参见下面的示例:
- name: Execute dos2unix on several files
shell: dos2unix “{{ scripts_dir }}/*.sh"
args:
chdir: "/home/yourdir/"
这应该将脚本转换为 unix 格式。然后,您可以像使用 Ansible 一样执行脚本。
编辑 如果您没有可用的 dos2unix 实用程序,您可以在执行之前使用 Ansible 安装它:
- name: Install dos2unix
apt:
name: dos2unix
state: present
推荐阅读
- vba - 在 VBA 中将 Word 对象分配给 Variant 变量
- python - 代码如何检查字符串是否为回文
- node.js - 从ftp下载文件并在nodejs中使用jsftp和crypto解密
- typescript - 缩小接口的通用联合属性,就好像它是打字稿中的局部变量
- java - Generating a PDF with custom size in android with PdfDocument
- node.js - Use node-gyp with atom
- java - Java Point Errors
- ruby-on-rails - 使用标记作为 :id 的编辑助手没有路由错误(来自 Ruby on rails 教程第三版)
- image - Flutter AssetImage 加载缓慢/白屏
- scala - 无法在 Scala.js 中执行 HmacSHA256 散列