在 shell 脚本中连接数组以创建备份的文件路径



我正在尝试在系统升级之前创建一个简单的备份脚本。

我想要一个文件路径(BACKUP_DIRS(数组,然后将其连接到另一个变量(SOURCE_DIRS(,该变量将用于使用tar进行备份

我很难将数组连接到一个间隔的变量中。

#!/bin/bash
BACKUP_DIRS=(
~/.ssh/
~/workspace/
~/Downloads/
)             
# Concat paths
SOURCE_DIRS=''
for DIR in "${BACKUP_DIRS[@]}"
do
    $SOURCE_DIRS = $SOURCE_DIRS' '$DIR
done
# Backup
tar -czf backup.tar.gz $SOURCE_DIRS

为什么要创建一个字符串SOURCE_DIRS当你可以只使用

tar -czf backup.tar.gz "${BACKUP_DIRS[@]}"

数组版本扩展到/my/first entry/the/second entry...,其中一字符串版本将被解释为/my/firstentry/the/secondentry...。因此,您的旧方法可能无法像包含空格的路径那样工作。

最新更新