Bash脚本无法使用日期重命名文件夹

时间:2015-03-13 14:28:30

标签: bash

我的旧备份脚本具有以下行,以使用备份日期重命名备份目录:

today=`date '+%Y-%m-%d'`
mv /media/DATA/Backup\ yzT\ * /media/DATA/Backup\ yzT\ $today

它没有任何问题。现在我一直在编辑脚本,添加更多目录到备份我想为备份目录声明一个变量:

today=`date '+%Y-%m-%d'`
BACKUPDIR=/media/DATA/Backup\ yzT\ $today
mv /media/DATA/Backup\ yzT\ * $BACKUPDIR

这样,如果以后我改变备份目录,我只需要编辑这个变量。

然而,mv失败了,我不知道为什么。如果它只是取今天的$而不是整个路径,因为输出是:

mv: target ‘2015-03-13’ is not a directory

$ BACKUPDIR的回显显示整个路径。

1 个答案:

答案 0 :(得分:1)

不是更好地转义空格,而是引用变量:

today=$(date '+%Y-%m-%d')
BACKUPDIR="/media/DATA/Backup yzT $today"
mv /media/DATA/Backup\ yzT\ * "$BACKUPDIR"

否则,shell会在空格之前将字符串解释为另一个参数,并在空格之后将日期部分解释为另一个参数。