Bash

嘗試寫入文件的 Bash 腳本錯誤:沒有這樣的文件或目錄

  • March 14, 2021

我收到一個非常簡單的腳本錯誤。該腳本應該執行 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 

date 命令工作正常,文件名完美,但不是正在創建文件,而是錯誤提示它不存在。我以 root 身份執行腳本,因此權限應該沒有問題。我可以毫無問題地寫入使用者的主目錄。

有任何想法嗎?

再次檢查生成的文件名:

/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"

引用自:https://unix.stackexchange.com/questions/344466