O'Reilly logo

Bash. Receptury by Cameron Newham, JP Vossen, Carl Albing

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

1.8. Sprawdzenie, czy powłoka pracuje w trybie interaktywnym

Problem

Dysponujemy kodem, który powinien być uruchamiany tylko w przypadku pracy powłoki w trybie interaktywnym lub w trybie nieinteraktywnym.

Rozwiązanie

Należy wykorzystać instrukcję case o następującej treści:

#!/usr/bin/env bash
# nazwa pliku receptury:  interaktywnosc

case "$-" in
    *i*)  #Kod powłoki interaktywnej
          ;;
    *)    #Kod powłoki nieinteraktywnej
          ;;
esac

Analiza

Zmienna $- przechowuje ciąg tekstowy wszystkich bieżących opcji powłoki. Jeżeli wśród nich występuje opcja i, powłoka pracuje w trybie interaktywnym.

Można również zastosować skrypt przedstawiony poniżej, ale metoda opisana wcześniej jest rozwiązaniem zalecanym.

if [ "$PS1" ]; then echo Powłoka pracuje w trybie interaktywnym else ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required