我正在尝试在系统升级前创建一个简单的备份脚本。
我想要一个文件路径数组(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/first
, entry
, /the/second
, entry
, .. .
。因此,对于其中包含空格的路径,您的旧方法可能无法像预期的那样工作。
关于arrays - 在 shell 脚本中连接数组以创建备份文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43034537/