Shell脚本将文件从一个目录复制到另一个目录不起作用

Shell脚本将文件从一个目录复制到另一个目录不起作用

嗨,我正在尝试通过 jenkins 自动化 android 构建系统。在这里,我尝试将图像文件从一个目录复制到另一个目录,但总是出现“没有这样的文件或目录”

SRC=/var/lib/jenkins/jobs/Android\ Gradle\ test\ build/workspace/MainApp/app/src/main/res/drawable-hdpi/logo_splash.png
DEST=/var/lib/jenkins/jobs/Android\ Gradle\ test\ build/workspace/MainApp/app/src/main/res/drawable/logo_splash.png

cp -rf  $SRC $DEST

错误日志:cp:目标“build/workspace/MainApp/app/src/main/res/drawable/logo_splash.png”不是目录

答案1

单词分割

通过将参数字符串和扩展包装在“引号”。注意到以下示例的颜色编码有何不同吗?它揭示了单词分组和分离方式之间的差异。

你可能需要也可能不需要\ 逃脱\文件路径的空白不再是了。


src="/var/lib/jenkins/jobs/Android\ Gradle\ test\ build/workspace/MainApp/app/src/main/res/drawable-hdpi/logo_splash.png"
dest="/var/lib/jenkins/jobs/Android\ Gradle\ test\ build/workspace/MainApp/app/src/main/res/drawable/logo_splash.png"

cp -rf  "$src" "$dest"

未引用

SRC=/var/lib/jenkins/jobs/Android\ Gradle\ test\ build/workspace/MainApp/app/src/main/res/drawable-hdpi/logo_splash.png
DEST=/var/lib/jenkins/jobs/Android\ Gradle\ test\ build/workspace/MainApp/app/src/main/res/drawable/logo_splash.png

cp -rf  $SRC $DEST

答案2

我不明白您尝试为这两个变量设置什么,但结果命令将扩展为:

cp -rf /var/lib/jenkins/jobs/Android Gradle test build/workspace/MainApp/app/src/main/res/drawable-hdpi/logo_splash.png /var/lib/jenkins/jobs/Android Gradle test build/workspace/MainApp/app/src/main/res/drawable/logo_splash.png

这意味着你尝试复制前 7 个参数

/var/lib/jenkins/jobs/Android
Gradle
test
build/workspace/MainApp/app/src/main/res/drawable-hdpi/logo_splash.png 
/var/lib/jenkins/jobs/Android
Gradle
test

到最终目的地:

build/workspace/MainApp/app/src/main/res/drawable/logo_splash.png 

由于有多个源参数,它实际上应该是一个文件夹。

答案3

尝试

cp -f  "$SRC" "$DEST"
  • 引号将处理文件名中的空格
  • 不需要-r(递归)

相关内容