Portál AbcLinuxu, 13. května 2025 23:27
#!/bin/bash while true do read INPUT echo $INPUT done
Řešení dotazu:
read
slouží k načítání textového vstupu po řádcích, ne k programování interaktivních aplikací reagujících na stisk kláves. K tomu druhému se navíc shell vůbec nehodí a urážením se a kopáním kolem sebe na tom nic nezměníte.
To, o co se snažíte, je nesmysl. Příkaz read
slouží k načítání textového vstupu po řádcích, ne k programování interaktivních aplikací reagujících na stisk kláves. K tomu druhému se navíc shell vůbec nehodí
Kdyby četl read po řádcích tak to tady neřeším, jenže read čte jen to co se mu zrovna číst chce, navíc vyžaduje potvrzení entrem pokud otřebujete načíst znaky o nějaké délce, pokud ani délku neznáte je read uplně k hovnu...
a urážením se a kopáním kolem sebe na tom nic nezměníte.To není urážka ani kopání, to jsou smutná fakta.....
pokud otřebujete načíst znaky o nějaké délce, pokud ani délku neznáte je read uplně k hovnuNo hurá. Konečně se někam dostáváme.
read
je na to úplně k hovnu.
Takto se skutečně interaktiní aplikace nepíší.
to jsou smutná fakta
s/smutná fakta/fakta/g
Pokud tedy nejde o to, že tu jsou teď každý týden dva tucty dotazů, jak se má v shellu udělat nějaká zvrácenost, ke které se shell naprosto nehodí. To je smutné.
read AAA if [[ $AAA > 9 ]] then read -n10 KEY else read -n5 KEY finebudu tahat nějakou knihovnu. Vwřím, že existuje funkční způsob jak toho dosáhnout :(
No přece k vůli takove blbosti … nebudu tahat nějakou knihovnu. Vwřím, že existuje funkční způsob jak toho dosáhnout :(No a to je odpověď na tvoji stížnost výše. Možná že "debilové" byli aspon ochotný poslechnout rady kterych se jim dostalo, zatímco teď se nám tu množí lidi kterým jejich neznalost nezabraňuje mít velmi vyhraněné názory na to jaké řešení jsou milostivě ochotni akceptovat. To se neber (moc) osobně, nejsi zdaleka první kdo mě tímhle naštval. Ad tvůj problém – kódy které posílají klávesy závisí na terminálu. Tebe bude zajímat přinejmenším "linux" (virtuální konzole ve framebufferu) a "xterm" (většina grafických terminálů), ale mohlo by přijít i na rxvt, screen,… prostě rozumnej člověk se do toho nesere a použije něco co má databázi terminálů pořešenou a leze z toho nějak normalizovaný výstup – nejčastěji readline nebo slang. Celkem jednoduše se to dá zařídit přes readline (a potřebný počet větví v inputrc), ale to je určený k řádkovému vstupu, ne k psaní aplikací.
Kdyby četl read po řádcích tak to tady neřeším … navíc vyžaduje potvrzení entrem
Uvědomujete si, jak si sám odporujete? Zkuste se zbavit toho pocitu ublíženosti a raději se pokuste pochopit, jak fungují nástroje, které se snažíte používat.
Kdyby četl read po řádcích tak to tady neřeším, jenže read čte jen to co se mu zrovna číst chce, navíc vyžaduje potvrzení entrem pokud otřebujete načíst znaky o nějaké délce, pokud ani délku neznáte je read uplně k hovnu...Co to?
read input
čte dokud nepotvrdíte vstup, tedy neznámou délku, a čte to právě tehdy, kdy o to byl požádán a čte všechny znaky co mu zadáte, dokud enter-em nepotvrdíte vstup/řádek.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.