使用bash脚本迭代逗号分隔的目录

时间:2015-04-04 22:41:01

标签: bash shell debian

我正在使用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提取之前删除这些目录?

1 个答案:

答案 0 :(得分:1)

假设目录中没有任何名称空格,只需将逗号转换为空格,并利用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 ...