![尝试写入文件时发生 Bash 脚本错误:没有这样的文件或目录](https://linux22.com/image/105362/%E5%B0%9D%E8%AF%95%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6%E6%97%B6%E5%8F%91%E7%94%9F%20Bash%20%E8%84%9A%E6%9C%AC%E9%94%99%E8%AF%AF%EF%BC%9A%E6%B2%A1%E6%9C%89%E8%BF%99%E6%A0%B7%E7%9A%84%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95.png)
我在一个非常简单的脚本中遇到错误。该脚本应该运行 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
它尝试写入名为02
of 的子目录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"