En una secuencia de comandos PS automatizando algunas tareas SVN tengo la siguiente función:¿Cómo suprimir la salida de stderr en Powershell?
function SvnUrlExists($url)
{
svn info $url | out-null 2>&1
return $?
}
Dado que este explícitamente comprueba si existe alguna URL del repositorio SVN, no me interesa en absoluto en cualquier salida de error. Sin embargo, a pesar de todo lo que encontré sobre la reorientación de stderr
en Powershell sugiriendo 2>&1
para redirigirlo a stdout
, esto todavía emite un mensaje de error:
svn: warning: W170000: URL 'blahblah' non-existent in revision 26762 svn: E200009: Could not display info for all targets because some targets don't exist
Desafortunadamente, esta meta la pata gravemente a la salida de mi guión.
¿Qué estoy haciendo mal y cómo debo suprimir este error de salida?
Además, si usted tiene una orden grande se puede envolver en '$() | out-null' para obtener el mismo efecto. Por ejemplo: '$ (svn info $ url 2> &') | out-null'. Hago esto cuando el comando es muy largo, o necesito dividirlo en unas pocas líneas en un script. – Nick
@Nick: Ah, gracias. Sin embargo, no tendría que ser '$ (svn info $ url) 2> & 1 | fuera de nulo'? (Tenga en cuenta la ubicación de '2> & 1'.) – sbi
Oh wow, leí completamente su publicación. Sí, debería ser '$ (svn info $ url) | out-null'. Depende de dónde desee que suceda la comprobación de errores para '2> & 1'. No puedo decir sin probarlo, pero no creo que debería importar si está dentro del ')' o afuera. En realidad, podrías dejar el '2> & 1' completamente, como dije, sin pruebas, no estoy seguro. – Nick