bash rsync找不到带空格的目录

时间:2019-03-15 22:13:16

标签: bash shell rsync

您好,我正在尝试制作备份脚本,问题是它找不到包含空格的目录。

bash脚本的代码。

#!/bin/bash

Desk="/Users/elev/Desktop/"

include_paths=(
    "${Desk}/Skola"
    "${Desk}/music"
    "${Desk}/jobb"
    # not working directory
    "${Desk}/programmering\ skola"

)

# ${include_paths[@]} means every value in the list
for item in "${include_paths[@]}"
do
    include_args="${include_args} ${item}"

done

DestPath="/Volumes/Atheer/backup"

rsync -av --delete ${include_args} $DestPath

如您所见,我已尝试使用反斜杠和空格,但仍然无法使用。我收到以下错误代码 rsync:link_stat“ / Users / elev / Desktop / programmering \”失败:没有这样的文件或目录 我想备份目录中也有空格的目录。感谢您的帮助

2 个答案:

答案 0 :(得分:3)

您已经知道如何使用数组。您应该更多地使用它们。 :)

rsync -av --delete "${include_paths[@]}" "$DestPath"

"${include_paths[@]}"(引号是必需的!)将include_paths数组中的每个元素扩展为单独的rsync自变量。

根本没有理由生成include_args

答案 1 :(得分:0)

这是另一个错误:

 "${Desk}/programmering\ skola"

尝试

 "${Desk}/programmering skola"

man bash中提取双引号:

  

仅当反斜杠后面跟随以下字符之一时,才保留其特殊含义:$,`,“,\或换行符。