Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Bash: jak pozastavit script pomocí read ?  (Přečteno 2120 krát)

deathfish

  • Aktivní člen
  • *
  • Příspěvků: 65
Bash: jak pozastavit script pomocí read ?
« kdy: 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

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Bash: jak pozastavit script pomocí read ?
« Odpověď #1 kdy: 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

deathfish

  • Aktivní člen
  • *
  • Příspěvků: 65
Re:Bash: jak pozastavit script pomocí read ?
« Odpověď #2 kdy: 14 Listopadu 2013, 07:43:29 »
Jede to parádně, děkuji.

VYŘEŠENO

 

Provoz zaštiťuje spolek OpenAlt.