尝试写入文件时发生 Bash 脚本错误:没有这样的文件或目录

尝试写入文件时发生 Bash 脚本错误:没有这样的文件或目录

我在一个非常简单的脚本中遇到错误。该脚本应该运行 pg_dumpall 并将输出写入文件,但我收到错误消息,表明生成的文件不存在。我知道它不存在,这就是为什么我想创建它! :-/

#!/bin/bash
#remove previous day's dump and create new
rm -f /home/user/db_dump_*.txt;
pg_dumpall -U postgres -w > /home/user/db_dump_`date '+%d/%m/%Y_%H:%M:%S'`.txt;

结果是:

db_dump.sh: line 4: /home/user/db_dump_12/02/2017_14:30:15.txt: No such file or directory 

日期命令工作正常,文件名完美,但我没有创建文件,而是收到错误消息,说它不存在。我以 root 身份运行脚本,因此应该不会有权限问题。我可以毫无问题地写入用户的主目录。

有任何想法吗?

答案1

再次检查生成的文件名:

/home/user/db_dump_12/02/2017_14:30:15.txt

它尝试写入名为02of 的子目录db_dump_12。如果这些目录不存在,您将收到“没有此类文件或目录“ 错误。

我建议使用另一种日期格式:

dumpfile_date=$( date +"%F-%T" ) # or %Y%m%d-%H%M%S or something similar
pg_dumpall -U postgres -w > "/home/user/db_dump_$dumpfile_date.txt"

相关内容