He estado intentando hacer este sencillo script que escribí donde ejecuta un archivo jar ejecutable que hice. El comando del script es el siguiente:

#!/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

El archivo jar funciona como se esperaba y recibo los resultados esperados:

enter image description here

La idea que he intentado descifrar es cómo evitar que esos textos aparezcan cuando ejecuto mi script y, en cambio, los imprimo en un archivo para que puedan revisarse más tarde. Espero que puedas abrirme algunas ideas. Muchas gracias.

3
Uzi 8 dic. 2017 a las 08:30

2 respuestas

La mejor respuesta

Redirigir la salida a un archivo:

migrateToPstopaidX.sh > output.log

Si quieres redirigir a stderr usa esto

  migrateToPstopaidX.sh &> output.log

Puede usar este >> para agregar el registro en lugar de >

4
vts 8 dic. 2017 a las 06:02

Redirigir tanto stdout como stderr al archivo de salida.

migrateToPstopaidX.sh > output.log 2>&1

Puede usar >> para agregar en lugar de sobrescribir su archivo.

Bash ejecuta las redirecciones de izquierda a derecha de la siguiente manera:

  • >: abre output.log en modo de sobrescritura y redirige stdout allí.
  • 2>&1: Redirigir stderr a "donde stdout se dirige actualmente". En este caso, se trata de un archivo abierto en modo anexar. En otras palabras, & 1 reutiliza el descriptor de archivo que stdout usa actualmente.
1
Allan 8 dic. 2017 a las 05:54