如何使用bash脚本将所有jar结果打印到文件中

3

我一直在尝试运行我编写的一个简单脚本,它可以运行一个我制作的可执行的jar文件。该脚本的命令如下:

#!/bin/bash
msisdn=$1

java -cp /home/support/phuzca/Migration/PostpaidXMigration_lib/ -jar /home/support/phuzca/Migration/PostpaidXMigration.jar $msisdn /home/support/phuzca/Migration/config.properties /opt/tomcat9/webapps/axis2/WEB-INF/classes/META-INF/PlanID.xml

该jar文件按预期工作,我收到了预期的结果:

enter image description here

我一直在试图解决的问题是如何防止这些文本出现在运行脚本时,并将它们打印到文件中以便稍后审查。希望您能为我提供一些想法。非常感谢。

以这种方式运行您的脚本:migrateToPstopaidX.sh>output.log - Vishnu T S
我已经尝试过了,但是在我运行脚本之后那些日志和异常仍然出现。 - Uzi
我已经在Unix中添加了stderrstdout的解释和重定向。 - Allan
2个回答

4

将输出重定向到文件:

migrateToPstopaidX.sh > output.log

如果你想重定向stderr,可以使用以下方法。
  migrateToPstopaidX.sh &> output.log

您可以使用此>>而不是>来追加日志。

我已经尝试过了,但是在运行脚本后那些日志和异常仍然出现。 - Uzi
我还没有尝试过这个。我会立刻尝试一下。谢谢。 - Uzi
1
简直不敢相信我为此苦苦挣扎了一整天。它正好按照我的意愿工作。非常感谢你。 - Uzi

1

stdoutstderr都重定向到输出文件。

migrateToPstopaidX.sh > output.log 2>&1

你可以使用>>来追加,而不是覆盖文件。
Bash从左到右依次执行重定向操作,如下所示:
  • >:以覆盖模式打开output.log并将stdout重定向到那里。
  • 2>&1:将stderr重定向到“stdout当前所在的位置”。在这种情况下,那是一个以追加模式打开的文件。换句话说,&1重用了stdout当前使用的文件描述符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接