Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: deathfish 13 Listopadu 2013, 11:52:04

Název: Bash: jak pozastavit script pomocí read ?
Přispěvatel: deathfish 13 Listopadu 2013, 11:52:04
Jednoduchý sript, který z textového souboru vytáhne co potřebuji a dále se plní podmínky, potřebuji zastavit když dojde k problému - opravím co potřebuji -a pokračovat stiskem enter. Viz příklad níže. Jenže se tam hádají příkazy "read" Jak na to?

Kód: [Vybrat]
#!/bin/bash

grep 'a'  /home/semafor.txt | while read radek; do
echo "$radek"

if [ "$radek" == "zelena" ]; then
echo zelena muzes jet
sleep 1

if [ "$radek" == "zelena" ]; then
echo zvedam zavory
sleep 2
fi

elif [ "$radek" == "cervena" ]; then
echo stuj
sleep 1

if [ "$radek" == "cervena" ]; then
echo spoustim zavory
sleep 2
fi

else
echo necekane potize
read                       #zde by se mi libilo pozastaveni scriptu
sleep 2
fi

done
Název: Re:Bash: jak pozastavit script pomocí read ?
Přispěvatel: GdH 13 Listopadu 2013, 14:01:06
Celá smyčka while za rourou beží v subshellu, který má vstup přesměrovaný na výstup grepu, takže každý další read ve smyčce bude číst odtud další řádek. Pokud budeš chtít číst z klávesnice, musíš ten vstup zase přesměrovat na terminál, například takto:

Kód: [Vybrat]
read </dev/tty
Název: Re:Bash: jak pozastavit script pomocí read ?
Přispěvatel: deathfish 14 Listopadu 2013, 07:43:29
Jede to parádně, děkuji.

VYŘEŠENO