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

Writing files in the wrong path with bash

在下面的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

这是输出:

Created backup directory: ~/Documents/backups/ ~/Documents/backups/testPrj_20170206_1609.tar.bz2

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

它进入:\~/Documents/backups/

此目标目录有效存在,并且在本地路径中。

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

~ 在引号中时不会扩展到您的主目录。不加引号(以及后面的 /),像这样:

BACKUP_DIR=~/"Documents/backups/"

此外,变量名使用小写或混合大小写是最安全的,这样您就不会不小心使用对 shell 或其他程序有特殊意义的变量名(使用 $PATH 是经典例子)。