Portál AbcLinuxu, 19. dubna 2024 15:20


Dotaz: Jak nastavit trap nebo lepší řešení

21.7.2014 16:07 Jara
Jak nastavit trap nebo lepší řešení
Přečteno: 348×
Odpovědět | Admin
Dobrej, poradí nějakej profík, co dát na začátek scriptu, aby se kdykoliv ukončil celý bash script když stisknu klávesu ESC ? Zkoušel jsem kde co najít, ale nic nefunguje, pak jsem našel trap ale taky to nejde a v man stránkách jsem nic moc nenašel :-(
trap exit ESC
Děkuji za vaši pomoc.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.7.2014 16:35 Sten
Rozbalit Rozbalit vše Re: Jak nastavit trap nebo lepší řešení
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tohle nejde udělat
22.7.2014 09:04 marek
Rozbalit Rozbalit vše Re: Jak nastavit trap nebo lepší řešení

Asi by slo napsat wrapper, ktery by cetl z /dev/tty nebo stdin a vse predaval scriptu, ktery chceme prerusit. Kdyby narazil na ridici znak, tak by zabil vsechny potomky.

Mate ale pravdu, ze to neni "co dat na zacatek scriptu"

marek
Fuky avatar 22.7.2014 09:27 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Jak nastavit trap nebo lepší řešení
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nespecifikoval jsi podrobnosti ohledně toho co bude skript dělat, tak mrkni na obecnou ukázku níže.

script.sh

#!/bin/bash

script_quit() {
    echo "# SIGTERM => Exiting script..."
}

trap 'script_quit; exit 0' TERM

while [ true ]; do
    echo "# Running script..."
    sleep 1
done

echo "# Exiting script..."

wrapper.sh

#!/bin/bash

./script.sh &
SCRIPT_PID=$!
echo "* SCRIPT_PID=${SCRIPT_PID}"

while [ true ]; do
    read -sn 1 KEY
    case "$KEY" in
        $'\e' )
            echo "* Escape key"
            kill $SCRIPT_PID
            echo "* Waiting on script.sh exit"
            wait $SCRIPT_PID
            break
            ;;
        * )
            echo "* Other key"
            ;;
    esac
done

echo "* Exiting wrapper..."
$ ./wrapper.sh
* SCRIPT_PID=22959
# Running script...
# Running script...
* Other key
# Running script...
# Running script...
* Escape key
* Waiting on script.sh exit
# SIGTERM => Exiting script...
* Exiting wrapper...

BASH escape character trauma
Question about bash read function and matching ESC

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
AraxoN avatar 22.7.2014 09:28 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak nastavit trap nebo lepší řešení
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skript vieš ukončiť klávesou Ctrl+c a nemusíš ani nikam nič písať.
22.7.2014 12:34 Petr
Rozbalit Rozbalit vše Re: Jak nastavit trap nebo lepší řešení
Odpovědět | | Sbalit | Link | Blokovat | Admin
stty intr ^[

Ale budou tam jisté side-efekty, nebudou fungovat šipky, atd... :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.