O estoy haciendo algo tonto o Sun lo está haciendo. ¿Cómo es que algo como:
java -version > version.txt
¿Todavía se imprime en stdout y deja version.txt vacía? Estoy revisando el código de salida, y todavía es 0, por lo que no es eso escribir a stderr.
Necesito esto porque estoy construyendo una herramienta de entorno de prueba y quiero verificar si la versión de Java es adecuada, estaba planeando capturar la salida de esa versión, pero ahora estoy atascado.
Estoy en OS X Leopard, Java versión 1.6.0_20.
¿Algunas ideas?
&
o al menos decir cómo se llama? Es realmente difícil de buscar en Google.>
por sí solo solo redirige stdout.&>
redirige tanto stdout como stderr en la mayoría de los shells.2>&1
es el mismo en conchas compatible con POSIX (bash
,zsh
,ash
). La sintaxis esx>&y
dóndex
yy
son descriptores de archivo (1
para stdout,2
para stderr). Solo>&
y&>
sonbash
extensiones específicas (que ambas significan1>somefile 2>&1
)&>
es una extensión no estándar. Sin embargo, bash y zsh lo saben. Desnudo>&
(sin números) tampoco es estándar, pero también bash y zsh lo saben. Todos los shells tipo Bourne (incluidos los shells conformes con POSIX) lo sabenx>&y
.Es una especie de característica hoy en día. ;-)
De un informe de error antiguo :
fuente
Solo como una adición a la respuesta de Ignacio:
Analizar la salida de
java -version
es bastante complejo y propenso a errores (y no se garantiza que la salida tenga siempre el mismo formato, especialmente con JVM que no sean Sun).Para verificar la versión de Java, puede ejecutar un pequeño programa de Java que verifique las propiedades apropiadas del sistema: vea Javadocs para getProperties () . Esta es la forma oficial y documentada de obtener información sobre el entorno Java. Probablemente quieras comprobar:
fuente