无法覆盖从源到目标的文件夹
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
为什么它不能解析 src
和 dest
?我试过 "$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]
几件事:
- 您应该首先将 header 添加到您的 bash 脚本
- 那么你的变量赋值不正确(多余的空格)
- 您的 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
”
你好,我正在尝试用以下 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
为什么它不能解析 src
和 dest
?我试过 "$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]
几件事:
- 您应该首先将 header 添加到您的 bash 脚本
- 那么你的变量赋值不正确(多余的空格)
- 您的 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
”