使用 bash 脚本遍历以逗号分隔的目录

Using bash script to iterate through comma separated directories

我正在使用 linux shell 脚本 (Debian) 来创建某些目录的备份。

它已经为一个目录工作:

#!/bin/bash
DIRNAME="directory1"

# This is the backup
tar cfv "_backups/NEW.tar" $DIRNAME > /dev/null 2>&1

...

# This is the restore
rm -rf $DIRNAME
tar xfv ...

现在我需要为多个逗号分隔的目录做备份和恢复。即:

#!/bin/bash
DIRNAMES="directory1,directory2,directory3,..."

问题:如何触发tar cfv命令将$DIRNAMES中的目录打包成一个tar以及如何我触发了 rm -rf,因此它会在 tar 提取之前删除这些目录?

假设 none 目录的名称中有任何空格,只需将逗号转换为空格,并利用 shell分词。

dirs=${DIRNAMES//,/ }

set -f     # disable glob expansion for safety

# This is the backup
tar cfv "_backups/NEW.tar" $dirs > /dev/null 2>&1     # do not quote $dirs

# This is the restore
rm -rf $dirs             # do not quote $dirs
tar xfv ...