【问题标题】:Writing files in the wrong path with bash使用 bash 在错误的路径中写入文件
【发布时间】: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/" 这会起作用。

标签: bash backup mkdir


【解决方案1】:

~ 在引号中时不会扩展到您的主目录。不要引用它(以及下面的 /),如下所示:

BACKUP_DIR=~/"Documents/backups/"

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

【讨论】:

    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多