使用bash在错误的路径中写入文件

时间:2017-02-06 16:17:09

标签: bash backup mkdir

在以下bash备份脚本中:

PROJECT="testPrj"
BACKUP_DIR="~/Documents/backups/"
BACKUP_FILES="./*.sh ./*.h ./*.hpp ./*.c ./*.cc ./*.cpp ./*.md ./*.txt ./BUILD"
BACKUP_TIME=_`date +%Y%m%d_%H%M`
BACKUP_FILENAME=$BACKUP_DIR$PROJECT$BACKUP_TIME.tar.bz2

mkdir -p $BACKUP_DIR
echo "Created backup directory:" $BACKUP_DIR

echo $BACKUP_FILENAME

tar -cpjf $BACKUP_FILENAME $BACKUP_FILES

这是输出:

  

创建备份目录:〜/ Documents / backups /   〜/文档/备份/ testPrj_20170206_1609.tar.bz2

我将压缩文件放在错误的路径中。而不是:    ~/Documents/backups/

它进入:\~/Documents/backups/

此目标目录实际存在,并且位于本地路径中。

从命令行自行运行mkdir会在正确的位置创建目录。

1 个答案:

答案 0 :(得分:1)

如果在引号中,

~将不会展开到您的主目录。保留它(以及以下/)不加引号,如下所示:

BACKUP_DIR=~/"Documents/backups/"

此外,最安全的是对变量名称使用小写或混合大小写,这样您就不会意外地使用对shell或其他程序具有特殊含义的变量名称(使用$PATH是典型示例)。 / p>