【问题标题】:Bash script failing to rename folder with dateBash脚本无法用日期重命名文件夹
【发布时间】:2015-03-13 14:28:29
【问题描述】:

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

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 失败了,我不知道为什么。这就像它只使用 $today 而不是整个路径,因为输出是:

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

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

【问题讨论】:

    标签: bash


    【解决方案1】:

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

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

    否则,shell 会在空格之前将字符串解释为不同的参数,而在空格之后将日期部分解释为不同的参数。

    【讨论】:

    • 我做错了什么xD。我也尝试使用双引号,但是这样做时忘记删除“\”...xD
    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 2011-12-25
    • 2016-01-02
    • 2014-12-15
    • 1970-01-01
    • 2014-07-17
    • 2015-02-25
    • 2020-06-29
    相关资源
    最近更新 更多