无法覆盖从源到目标的文件夹

Can not overwrite folder from source to destination

你好,我正在尝试用以下 shell 脚本:

update.sh

src= './Server/Core/Server/bin/Debug/netcoreapp2.1/publish'
dest= './Server/publish'
echo  "Src:${src},Dest:${dest}"
cp  "$src" "$dest"

我收到以下错误:

$ ./update.sh
./update.sh: line 1: ./Server/Core/Server/bin/Debug/netcoreapp2.1/publish: Is a directory
./update.sh: line 2: ./Server/publish: Is a directory
Src:,Dest:
cp: cannot stat '': No such file or directory

为什么它不能解析 srcdest ?我试过 "$src""${src}" 都无济于事。

去掉第一个引号前的空格,=前后不能有空格。

变量应该这样声明:

src='./Server/Core/Server/bin/Debug/netcoreapp2.1/publish'
dest='./Server/publish'

引号前的空格将路径视为需要执行的文件,如果文件存在,这些命令的结果将是变量的值。

类似的,如果你在=之前添加空格,它会认为变量名是一个需要执行的命令。

来自 bash 手册页

A variable may be assigned to by a statement of the form

name=[value]

几件事:

  1. 您应该首先将 header 添加到您的 bash 脚本
  2. 那么你的变量赋值不正确(多余的空格)
  3. 您的 cp 没有复制任何最终的子目录

工作示例:

#!/bin/bash

src="./src/data"
dest="./dst/data"
echo  "Src:${src},Dest:${dest}"
rm -rf ${dest}
cp -R ${src} ${dest}

只需删除变量赋值中的空格。 另外,要复制子目录,请使用“cp -r”递归复制目录

对其他选项执行“cp --help