Bash pg_backup.sh:“;没有这样的文件或目录;对于pg_backup.config
为了创建postgres DB的备份,我下载了提供的备份脚本 我创建了一个Bash pg_backup.sh:“;没有这样的文件或目录;对于pg_backup.config,bash,postgresql,shell,backup,dump,Bash,Postgresql,Shell,Backup,Dump,为了创建postgres DB的备份,我下载了提供的备份脚本 我创建了一个pg_backup.config,它位于/etc中。将pg_backup.sh放入/usr/local/bin中。尝试运行脚本时,如下所示: $ pg_backup.sh -c /etc/pg_backup.config 。。。我收到以下错误消息: /usr/local/bin/pg_backup.sh: line 27: /usr/local/bin/pg_backup.config: No such file or
pg_backup.config
,它位于/etc
中。将pg_backup.sh
放入/usr/local/bin
中。尝试运行脚本时,如下所示:
$ pg_backup.sh -c /etc/pg_backup.config
。。。我收到以下错误消息:
/usr/local/bin/pg_backup.sh: line 27: /usr/local/bin/pg_backup.config: No such file or directory
我做错什么了吗?显然,脚本试图从
/usr/local/bin/pg_backup.config
加载配置,尽管我将/etc/pg_backup.config
指定为配置输入。如何指定从何处加载配置?该脚本似乎接受命令行上的配置文件,但也要求在二进制文件本身旁边存在一个配置文件(并以不太可靠的方式查找该位置)
剧本刚刚被打破
它要做的第一件事就是解析它的命令行选项(使用手动while
循环)。这样做时,它会将它们从位置参数中删除(使用shift
)。当没有更多的位置参数时(当[$#-gt 0]
不再为真时),它停止该循环
在排空位置参数后,它立即再次检查位置参数的计数(如果[$#=0];那么),并且不可避免地发现没有更多的位置参数时,它会尝试来源其默认配置文件
相反,pg\u backup\u rotated.sh
脚本有一个更合理的机制来加载配置文件(尽管它仍然使用不太可靠的方法来查找默认配置文件的位置)。没有注意到pg\u backup\u rotated.sh
中的代码有所不同。我将坚持这一点,因为它似乎在我的情况下工作。谢谢你的详细解释!