Sprawdzanie, czy polecenie zakończyło się w uderzeniu za pomocą „$?„Specjalna zmienna

Sprawdzanie, czy polecenie zakończyło się w uderzeniu za pomocą „$?„Specjalna zmienna

W BASH często konieczne jest sprawdzenie, czy polecenie zakończyło się lub nie powiodło się. Na przykład możesz chcieć wykonać różne polecenia na podstawie sukcesu lub porażki polecenia, lub możesz chcieć wykonywać obsługę błędów w skrypcie. Aby sprawdzić, czy polecenie zakończyło się lub nie powiodło się w Bash, możesz zbadać status wyjścia polecenia. Status wyjścia polecenia jest wartością numeryczną, która wskazuje sukces lub porażkę polecenia. Polecenie ze statusem wyjścia 0 wskazuje na sukces, a polecenie o niezerowym statusie wyjścia wskazuje na awarię.

W tym artykule zbadamy różne sposoby sprawdzenia statusu wyjścia polecenia w Bash, w tym korzystanie z '$?' Specjalna zmienna, za pomocą „&&” I „||” operatorzy i używanie skryptów i funkcji. Zrozumienie, jak sprawdzić status wyjścia polecenia w Bash może być pomocny w różnych scenariuszach podczas pracy z Bash.

Sprawdzanie, czy polecenie zakończyło się w BASH

W Bash możesz sprawdzić, czy polecenie zakończyło się lub nie powiodło się, badając status wyjścia polecenia. Status wyjścia polecenia jest wartością numeryczną, która wskazuje sukces lub porażkę polecenia. Polecenie ze statusem wyjścia 0 wskazuje na sukces, a polecenie o niezerowym statusie wyjścia wskazuje na awarię.

Aby sprawdzić status wyjścia polecenia w BASH, możesz użyć $? Zmienna specjalna, która przechowuje status wyjścia najnowszego wykonanego polecenia.

Na przykład rozważ następujące polecenie:

LS -L /itp  

To polecenie zawiera zawartość zawartości '/itp' katalog w długim formacie. Aby sprawdzić, czy to polecenie się powiodło, możesz użyć następującego kodu:

ls -l / etc / if [$? -Eq 0]; Następnie echo „polecenie powiodło się„ else echo ”, polecenie nie powiodło się” FI
123456ls -l /etc /if [$? -Eq 0]; Następnie echo „polecenie powiodło się„ else echo ”, polecenie nie powiodło się” FI

Ten kod sprawdza status wyjścia polecenia LS, badając wartość $? Specjalna zmienna. Jeśli wartość '$?' Jest „0”, Polecenie się powiodło, a kod drukuje „Polecenie się powiodło”. Jeśli wartość '$?' jest niezerowe, polecenie nie powiodło się, a kod drukuje „Polecenie nie powiodło się”.

Sprawdź status wyjścia funkcji

Możesz także użyć '$?' Specjalna zmienna do sprawdzenia statusu wyjścia polecenia w skrypcie lub funkcji. Rozważmy na przykład następujący skrypt:

#/usr/bin/env bash check_command () polecenie if [$? -Eq 0]; Następnie zwróć 0 else zwróć 1 fi check_command ls -l / etc / if [$? -Eq 0]; Następnie echo „polecenie powiodło się„ else echo ”, polecenie nie powiodło się” FI
1234567891011121314151617#/usr/bin/env bash check_command () polecenie if [$? -Eq 0]; Następnie zwróć 0 else zwróć 1 fi check_command ls -l /etc /if [$? -Eq 0]; Następnie echo „polecenie powiodło się„ else echo ”, polecenie nie powiodło się” FI

Ten skrypt definiuje funkcję check_command, który przyjmuje polecenie jako argument i sprawdza status wyjścia polecenia. Funkcja powraca „0” Jeśli polecenie się powiodło i „1” Jeśli polecenie nie powiodło się. Następnie skrypt wywołuje funkcję Check_Command za pomocą polecenia LS i sprawdza status wyjścia funkcji, badając wartość '$?' Specjalna zmienna. Jeśli wartość '$?' Jest „0”, Polecenie się powiodło, a skrypt drukuje „Polecenie się powiodło”. Jeśli wartość '$?' Jest „1”, Polecenie się nie powiodło, a skrypt drukuje „Polecenie nie powiodło się”.

Sprawdź status wyjścia za pomocą „&&” I „||” w Bash

Oprócz korzystania z '$?' Specjalna zmienna, możesz również użyć „&&” I „||” Operatorzy, aby sprawdzić status wyjścia polecenia i wykonać różne polecenia na podstawie wyniku. Na przykład rozważ następujący kod:

ls -l / etc / && echo „polecenie udaje się” || Echo „Polecenie nie powiodło się”
1ls -l / etc / && echo „polecenie udaje się” || Echo „Polecenie nie powiodło się”

Ten kod sprawdza status wyjścia „ls”„polecenie i wykonuje różne polecenia na podstawie wyniku. Jeśli polecenie LS się powiodło, kod drukuje „Polecenie się powiodło”. Jeśli polecenie LS nie powiodło się, kod drukuje „Polecenie nie powiodło się”.

Wniosek

Podsumowując, sprawdzenie, czy polecenie zakończyło się lub nie powiodło się w BASH, jest użytecznym zadaniem, które można wykonać, badając status wyjścia polecenia. Status wyjścia polecenia jest wartością numeryczną, która wskazuje sukces lub porażkę polecenia. Polecenie ze statusem wyjścia „0” Wskazuje sukces, a polecenie o niezerowym statusie wyjścia wskazuje na awarię. Aby sprawdzić status wyjścia polecenia w BASH, możesz użyć $? Zmienna specjalna, która przechowuje status wyjścia najnowszego wykonanego polecenia.

Możesz także użyć $? Specjalna zmienna do sprawdzenia statusu wyjścia polecenia w skrypcie lub funkcji lub użycie „&&” I „||” Operatorzy, aby sprawdzić status wyjścia i wykonać różne polecenia na podstawie wyniku. Zrozumienie, jak sprawdzić status wyjścia polecenia w Bash, może być pomocne w różnych scenariuszach, na przykład gdy chcesz wykonać różne polecenia w oparciu o sukces lub porażkę polecenia lub gdy chcesz wykonywać obsługę błędów w skrypcie.