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

标签 arrays linux bash 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/first, entry, /the/second, entry, .. .。因此,对于其中包含空格的路径,您的旧方法可能无法像预期的那样工作。

关于arrays - 在 shell 脚本中连接数组以创建备份文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43034537/

相关文章:

javascript - 你如何在javascript中 'search'数组?

javascript - 如何测试变量是Map类型还是Array类型?

linux - 获取 bash : syntax error near unexpected token `(' in curl

c - 重新分配 double 组

arrays - 如何在 Swift 中为 UIPickerView 按字母顺序排列数组

linux - 如何转换文件中的所有 unix 日期?

linux - 有没有办法可以在 linux 上查看真实进程 cmdline?

java - 将参数从 java 程序传递到 bash 脚本,该脚本使用参数调用另一个 java 程序

linux - 在 ls 输出中包括换行符?

bash - 管道 View 循环序列(向 While 或 For 循环添加进度条)- Bash