您好,我正尝试使用以下外壳脚本将文件夹 发布 从source
覆盖为destination
:
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}"
都没有用。
答案 0 :(得分:2)
删除第一个引号之前的空格,在=
之前或之后不应存在空格。
变量应这样声明:
src='./Server/Core/Server/bin/Debug/netcoreapp2.1/publish'
dest='./Server/publish'
用引号前的空格将其视为需要执行的文件,如果这些命令存在,则这些命令的结果将是变量的值。
类似地,如果您在=
之前添加了空格,它将变量名视为需要执行的命令。
来自bash手册页
可以通过以下形式的语句将变量赋给
名称= [值]
答案 1 :(得分:1)
几件事:
工作示例:
#!/bin/bash
src="./src/data"
dest="./dst/data"
echo "Src:${src},Dest:${dest}"
rm -rf ${dest}
cp -R ${src} ${dest}
答案 2 :(得分:1)
只需删除变量分配中的空格即可。
另外,对于带有子目录的复制,请使用“ cp -r
”来递归复制目录
对其他选项执行“ cp --help
”