我正在尝试运行这个命令:
mysql --host="$ipAddr" -u "$usr" -p -t < "$baseName.sql" >> log.txt
如您所见,我正在尝试使用从文件加载的参数运行此命令,并将结果保存到另一个文件。我的命令执行正确,但文件“log.txt”保持为空。如何纠正?
答案1
对于您所看到的情况,一个可能的解释是,该命令仅向 stderr 生成输出,而不向 stdout 生成输出。
你做过这样的事:
mysql [...] >> log.txt
这意味着您将 stdout 重定向到 log.txt 文件。但是,任何到 stderr 的输出仍将直接出现在您的终端中,而不会转到 log.txt 文件。通常,错误消息会输出到 stderr,因此如果您的 mysql 命令产生了一些错误消息,那么这些消息很可能会输出到 stderr 而不是 stdout。
你可以尝试这样做:
mysql [...] >> log.txt 2>> err_log.txt
(只需在命令行末尾添加“2>> err_log.txt”即可)
这意味着您现在请求将 stdout 重定向到 log.txt 文件,像以前一样,但现在您还将 stderr 重定向到 err_log.txt 文件。
更多详情请参见此处:https://stackoverflow.com/questions/7526971/how-to-redirect-both-stdout-and-stderr-to-a-file