终端从文件读取然后保存到文件

终端从文件读取然后保存到文件

我正在尝试运行这个命令:

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

也在这里:https://stackoverflow.com/questions/876239/how-can-i-redirect-and-append-both-stdout-and-stderr-to-a-file-with-bash

相关内容