【发布时间】:2017-02-06 16:17:08
【问题描述】:
在以下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/ ~/Documents/backups/testPrj_20170206_1609.tar.bz2
我在错误的路径中获取了压缩文件。而不是:
~/Documents/backups/
它进入:\~/Documents/backups/
此目标目录有效存在,并且在本地路径中。
从命令行单独运行 mkdir 会在正确的位置创建目录。
【问题讨论】:
-
~在引号中时不会扩展到您的主目录。使用BACKUP_DIR=~/"Documents/backups/"。此外,对变量名使用小写是最安全的,这样您就不会意外使用对 shell 或其他程序具有特殊含义的变量名(使用$PATH是经典示例)。 -
你是对的。如果您将此评论移至答案,我会接受。
-
您可能更喜欢 `BACKUP_DIR="$HOME/Documents/backups/" 这会起作用。