Portál AbcLinuxu, 14. května 2025 23:06

Dotaz: Objasnění kódu

8.11.2012 20:03 Jakub
Objasnění kódu
Přečteno: 388×
Odpovědět | Admin
Ahoj, mohl by mi prosím někdo zdatný přečíst tyto dva řádky kódu, tak aby je pochopil? Předem moc děkuji za ochotu.
#!/bin/bash
trap "stty $(stty -g)" EXIT
stty -echo -icanon time 2 || exit $?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.11.2012 20:31 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Objasnění kódu
Odpovědět | | Sbalit | Link | Blokovat | Admin
trap ... EXIT nastavi, co sa ma vykonat pri ukonceni skriptu, v tomto pripade obnovi vlastnosti terminalu v case spustenia skriptu. To druhe sa pokusi zmenit vlastnosti terminalu (detaily si najdes v man stty) a ak sa to nepodari, tak skonci (a obnovi stav). Ak sa podari, tak pokracuje v skripte, v tejto ukazke teda tiez skonci (a obnovi), ale v originale tam asi nieco nasleduje dalej.
If you hold a Unix shell up to your ear, you can you hear the C.
8.11.2012 20:33 chrono
Rozbalit Rozbalit vše Re: Objasnění kódu
Odpovědět | | Sbalit | Link | Blokovat | Admin
stty -echo -icanon time 2 || exit $?
zakáže vypisovanie stlačených klávesov do terminálu (vhodné napr. pri vkladaní hesla); pri chybe sa skript ukončí
trap "stty $(stty -g)" EXIT
obnoví pôvodné nastavenia terminálu pri ukončovaní toho skriptu (tá časť $(stty -g) vypíše aktuálne nastavenia v tvare, ktorý sa dá použiť ako parameter pre program stty)
9.11.2012 00:53 l4m4
Rozbalit Rozbalit vše Re: Objasnění kódu
Možná by se pro pochopení hodilo explicitně poznmenat, že $(...) se expanduje uvnitř "", kdyby někomu nedocházelo, jak se tím obnoví původní nastavení...
herne the hunter avatar 8.11.2012 20:47 herne the hunter | skóre: 10 | tor lara
Rozbalit Rozbalit vše Re: Objasnění kódu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Přes trap se dá nastavít, co se má vykonat za příkaz když shell dostane signál. V tomhle případě se před ukončením (EXIT není žádnej signál) pomocí stty obnoví původní nastavení terminálu získaný přes stty -g.

Na druhý řádce se nastavuje terminál přes stty a pokud stty vrátí nenulovej návratovej kód (nejspíš to nastavení selhalo), tak se skript se ukončí a vrátí návratovej kód stty.

líp to bohužel vysvětlit nedokážu 0:-)
i am herne the hunter and you are a leaf driven by the wind.
herne the hunter avatar 8.11.2012 20:48 herne the hunter | skóre: 10 | tor lara
Rozbalit Rozbalit vše Re: Objasnění kódu
kurnik, příště asi nejdřív refreshnu tu stránku, abych nebyl za blbce...
i am herne the hunter and you are a leaf driven by the wind.

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.