W skrypcie PS automatyzację niektórych zadań SVN Mam następującą funkcję:Jak tłumić wyjście stderr w Powershell?
function SvnUrlExists($url)
{
svn info $url | out-null 2>&1
return $?
}
Od tego wyraźnie sprawdza, czy niektóre repozytorium SVN URL istnieje, nie jestem zainteresowany w ogóle w każdym wyjściu błędu. Jednak mimo wszystko znalazłem o przekierowanie stderr
w PowerShell sugerując 2>&1
przekierować go do stdout
, to nadal wysyła komunikat o błędzie:
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
Niestety, ten poważnie bałagan wyjścia mojego scenariusza.
Co robię źle, i jak powinienem pomijać ten wynik błędu?
Ponadto, jeśli masz większy polecenia można zawinąć go w '$() | out-null', aby uzyskać ten sam efekt. Na przykład: '$ (svn info $ url 2> &') | out-null ". Robię to, gdy polecenie jest bardzo długie, lub muszę je rozbić na kilka linii w skrypcie. – Nick
@Nick: Ah, dzięki. Jednak nie musi to być '$ (svn info $ url) 2> & 1 | out-null'? (Zauważ umieszczenie '2> & 1'.) – sbi
Oh wow, całkowicie błędnie przeczytałem twój post. Tak, powinno to być '$ (svn info $ url) | out-null ". Zależy to od tego, gdzie ma nastąpić sprawdzanie błędów dla '2> i 1'. Nie mogę powiedzieć bez testowania tego, ale nie sądzę, że powinno to mieć znaczenie, jeśli znajduje się wewnątrz ')' lub na zewnątrz. Możliwe, że będziesz w stanie całkowicie opuścić '2> i 1', tak jak powiedziałem, bez testowania, nie jestem pewien. – Nick