Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wyłączyć wyjście i sprawdzić, czy polecenie się powiodło?

Aktualizuj :

  • if ($LASTEXITCODE -eq 0) ... podejście będzie nadal działać solidnie z programami zewnętrznymi.
  • Jednak, jeśli i kiedy wersja sprzed wersji 7.2 funkcja eksperymentalna o nazwie PSNotApplyErrorActionToStderr staje się oficjalną funkcją, if ($?) ... będzie również działać solidnie — zobacz tę odpowiedź aby uzyskać więcej informacji.

Użyj $LASTEXITCODE -eq 0 zamiast $? do niezawodnego wykrywania niezerowego kodu wyjścia (zazwyczaj sygnalizuje awarię) zgłaszane przez zewnętrzny program.

Następnie możesz użyć *> $null kategorycznie pominąć wszystkie dane wyjściowe bez martwienia się o wpływ tego przekierowania na $? :

mysql -u root --password=mypass -e "show databases" *>$null
if ($LASTEXITCODE -eq 0) {
  "Hooray!"
} else {
  "Boo!"
}

Używanie przekierowania, które obejmuje strumień błędów programu PowerShell — jawnie za pośrednictwem 2> lub niejawnie przez *> - oznacza, że ​​jeśli jakiekolwiek dane są odbierane przez ten strumień - co w przypadku wywołania zewnętrznego programu oznacza dowolne wyjście z stderr - PowerShell ustawia $? na $false .

Jednak w sferze zewnętrznych programów konsoli / terminala stderr nie jest używany tylko do wyświetlania błędu informacje, ale wszelkie informacje, które nie są danymi , takie jak informacje o stanie. Dlatego nie można wywnioskować niepowodzenia z obecności wyjścia stderr .

Zewnętrzne programy konsoli / terminala informują o swoim powodzeniu wyłącznie za pomocą kodu wyjścia , który PowerShell odzwierciedla w automatycznym $LASTEXITCODE zmienna.

Z powyższego wynika, że ​​$? może być $false nawet jeśli kod wyjścia to 0 , więc nie jest wiarygodnym wskaźnikiem sukcesu — w przeciwieństwie do $LASTEXITCODE .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd MySQL 1264:wartość poza zakresem dla kolumny

  2. mysql sortowanie i zestawienie rankingowe

  3. Nie mogę dowiedzieć się, jak uruchomić mysqli_multi_query i wykorzystać wyniki z ostatniego zapytania

  4. Wykonywanie zapytania MySQL SELECT * równolegle

  5. Przegląd replikacji między klastrami