使用 space 和逗号更正路径的 bash 语法

Correct bash syntax for path with space and comma

我正在使用rsync 来备份数据。现在,我无法备份包含逗号和 space 字符的文件夹。我使用带有源名称的数组:

dirs=(
    /home/user/Desktop
    ...
    /home/user/foo, bar
)

最后一个条目的正确语法是什么?

只是引用他们的话:

dirs=(
    '/home/user/Desktop'
    ...
    '/home/user/foo, bar'
)

这可以防止 word splitting 发生。由于这些是字符串文字(例如,没有变量扩展),我更喜欢使用单引号。

假设您计划循环遍历这些目录,在这种情况下,您还应该在循环中引用变量:

for dir in "${dirs[@]}"; do
    rsync command using "$dir"
done

这里需要双引号,这样就不会进行分词,但变量仍然会展开。