Google Cloud Build执行mv命令报missing file operand错误如何修复
问题原因
报错
mv: missing file operand是由bash -c参数的传参规则导致的:
当使用/bin/bash -c时,-c后的第一个参数会被识别为完整的待执行命令字符串,后续所有参数只会作为该命令字符串内的位置变量($0、$1等)传入,不会直接作为命令的执行参数。
你原配置的执行逻辑等价于直接运行无参数的mv命令,因此触发参数缺失报错。
修复方案
方案1:合并命令为完整字符串(最常用)
将整段移动逻辑合并为单个字符串放在-c后即可,建议同时提前创建目标目录,避免目录不存在导致的二次报错:
- name: 'gcr.io/cloud-builders/docker' entrypoint: /bin/bash args: ['-c', 'mkdir -p dist/project_name && mv index.js dist/project_name']
方案2:直接指定mv为entrypoint(无需bash调用)
如果不需要执行多段命令,也可以直接把mv设为入口点,参数直接传递源文件和目标路径即可:
- name: 'gcr.io/cloud-builders/docker' entrypoint: /bin/mv args: ['index.js', 'dist/project_name']
注意:使用该方案需要提前确保dist/project_name目录已经存在,否则会触发目标路径不存在的报错
内容的提问来源于stack exchange,提问作者George Hulpoi
相关产品推荐
相关产品推荐

