Portál AbcLinuxu, 13. května 2025 19:19
echo "zvol yes or no" read xToto je dobrý, ale má to chybu, že vždy musím stisknout enter. Já bych chtěl, aby se po určité době samo zvolilo 'no' a script pokračoval dál. A kdyby ještě bylo vidět odpočítávání, tak by to bylo krásné. editace souboru - Aby script nahradil slovo nebo řádek v nějakém souboru. A ještě lepší by bylo, kdyby script jeden řádek zakomentoval a druhej odkomentoval. děkuji mockrát
read
má parametr -t
(viz manuál). Například:
echo "zvol yes or no" read -t 5 x || x=no
sed
nebo awk
.y=10 while [ $y -ge 0 ] do echo $y y=$(expr $y - 1) done
y=5 echo -n "cislo je $y" sleep 1 while [ $y -ge 0 ] do sleep 1 echo -en "\b$y" y=$(expr $y - 1) done
tak se do něj smím pomocí návratového vozíku vráti (-e) a ještě s ním něco udělat. správně?Ne tak docela. Návrat vozíku je ono
\r
na začátku řetězce, parametr -e
pouze zajistí, že se budou tyto sekvence správně interpretovat (takhle lze také měnit barvy na terminálu atd.).
Ještě by to chtělo, aby na jednom řádku v klidu probíhalo odpočítavání a přitom (zároveň ve stejný okamžik) byl prostor na dalším řádku pro read y.Neříkám, že to nejde, ale skoro se mi zdá, že jste si vybral špatný nástroj. Shellovské skripty se obvykle podobným „cukrátkům“ vyhýbají, protože je těžké zajistit přenositelnost na různých typech terminálů a je také problém s přesměrováním vstupu a výstupu (pokud chci skript dále automatizovat).
read -t
echo -n "Pokracovat [ano/ne] (za 3s automaticky pokracujeme)? "; read -t 3 ANSWER || { echo "ano"; ANSWER="ano"; }; echo "Odpoved je $ANSWER";
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.