2013-01-21 27 views
5

ciągu mój skrypt powłoki uruchomić polecenie:Uruchamianie skryptu Pythona w skrypcie - Sprawdzić stan

python script.py 

Zastanawiałem się, jak dwuczęściowego pytania:

  1. Jak mogę zaprogramować mój skrypt python przekazuje status do skryptu powłoki, który uruchomił go w zależności od tego, co dzieje się w skrypcie pythona. Na przykład, jeśli coś pójdzie nie tak w skrypcie pythona, wyjdź z kodem 1, który jest wysyłany z powrotem do powłoki.

  2. W jaki sposób można uzyskać skrypt powłoki, aby odczytać kod zakończenia Pythona i wyjść na błąd? Na przykład kod stanu dla niczego oprócz 0, a następnie zakończ.

+0

Dla # 2: http://stackoverflow.com/questions/90418/exit-shell-script-based-on-process-exit-code?rq=1 – acjay

Odpowiedz

13

Po pierwsze, można przekazać pożądany kod wyjścia jako argument do sys.exit w swoim skrypcie pythona.

Po drugie, kod zakończenia ostatnio zakończonego procesu można znaleźć w bash parametrze $?. Jednak nie zawsze trzeba sprawdzić to wyraźnie:

if python script.py; then 
    echo "Exit code of 0, success" 
else 
    echo "Exit code of $?, failure" 
fi 

Aby sprawdzić kod wyjścia wyraźnie, trzeba dostarczyć wyrażenia warunkowego do rachunku if:

python script.py 
if [[ $? = 0 ]]; then 
    echo "success" 
else 
    echo "failure: $?" 
fi 
+0

Czy potrzebuję linii przed Twoim kodem, mówiąc, że python script.py ją uruchamia? – Jimmy

+0

Czy zamiast tego twój kod również uruchamia skrypt? – Jimmy

+0

Lista poleceń daje w instrukcji 'if' jest wykonywana, a jej kod wyjścia określa, która gałąź' if' jest wykonywana w następnej kolejności. – chepner

Powiązane problemy