Tengo un script Perl que llama a otro script. La secuencia de comandos de Perl debe estar propagando el código de retorno del script pero parece devolver cero a su llamador (una aplicación Java). Describa la llamada explícita al .¿Por qué mi script Perl devuelve un código de retorno cero cuando explícitamente invoco exit con un parámetro distinto de cero?
Código y la salida de la siguiente manera (me di cuenta de que <=>
podría/debería ser !=
pero eso es lo que tengo):
print "INFO: Calling ${scriptDirectory}/${script} ${args}"
$scriptReturnCode = system("${scriptDirectory}/${script} ${args}");
if ($scriptReturnCode <=> 0) {
print "ERROR: The script returned $scriptReturnCode\n";
exit $scriptReturnCode;
} else {
print "INFO: The script returned $scriptReturnCode.\n";
exit 0;
}
La salida que tengo desde el Java es:
20/04/2010 14:40:01 - INFO: Calling /path/to/script/script.ksh arg1 arg2
20/04/2010 14:40:01 - Could not find installer files <= this is from the script.ksh
20/04/2010 14:40:01 - ERROR: The script returned 256
20/04/2010 14:40:01 - Command Finished. Exit Code: 0 <= this is the Java app.
Supongamos que quiere decir 'shift' como en' $ scriptReturnCode = $ scriptReturnCode >> 8; ' –
Sí, actualizado. – DVK
Idealmente, agregue explícitamente que los códigos de salida se truncan en 8 bits (bajos), por lo que devolver 256 en lugar del 1 previsto termina como 0. De forma similar, devolver 257 termina como 1, etc. – ysth