我想将内容复制"src/main/resources/"
到我的远程服务器。该文件夹包含多个*properties
文件。
以下命令在 bash 和 zsh 中执行没有任何问题:
rsync -av "src/main/resources/*" "[email protected]:/home/azureuser"
但是,在 shell 脚本中执行此类命令时,我收到以下错误。我认为这是由于*
外壳中的扩展。
rsync: link_stat "/home/marcos/Desenvolvimento/Java/EXT-Hyuga/src/main/resources/*" failed: No such file or directory (2)
我该如何解决这个问题?
Shell 脚本内容:
#!/bin/bash
# server array
declare -a deployinstances=("s1" "s2" "s3" "s4")
## looping trough deploy instances
for di in "${deployinstances[@]}"
do
rsync -av "src/main/resources/*" "azureuser@$di.cloudapp.net:/home/azureuser"
done
您的第一个命令,您直接在命令行中运行的命令也不起作用。
在(和所有其他 shell)中,当将标记(例如, )放在引号(双引号和单引号)内
bash
时,不会发生文件名生成(AKA 路径名扩展或全局扩展),因为在路径名扩展后由 shell 完成引号删除对于任何单词,因此该单词按字面意思处理。*
?
[]
所以你需要保持
*
在引号之外:我没有在任何路径名中使用任何引号,因为除非路径中有空格,否则路径周围不需要引号。