[megoldva] bash script: kilépés ciklusból billentyűre

Sziasztok

Van egy bash scriptem, amiben egy végtelen ciklus fut.

while true; do
#ciklusmag
done
jelleggel.

Elindul, teszi a dolgát, de leállítani ugye nem tudom, csak a processz leállításával. ( Ctrl-C )
Azt szeretném megtanítani neki, hogy figyelje a billentyű-leütéseket, és ha kap egy Any key -t, /:)/ akkor szakítsa meg a ciklust, és folytassa a done után.
read -n 1 -gyel próbálkoztam, eleddig eredméytelenül.
Hálás lennék valami jó ötletért :)

Köszi, üdv

tsb

Hozzászólások

break
vagy az a kérdés, hogy a read-nek ne kelljen Entert nyomni?

A read-en blokkolni fog, ha csak nem adsz meg timeoutot neki (esetleg összevonhatod a sleeppel)
Másik ötlet, hogy háttérben indítod a ciklust és egy változót figyel kilépési feltételként.
Readdel olvasod a billentyűket és állítod a változót.
Ezt szerintem a bashban fájdalmas lehet megírni :)

Kicsit googleztam és ezt találtam:


#!/bin/bash

escape=$'\x1b'

echo "Looping..."
while true
do

  read -s -n1 -t1 key
echo "test";
  if [ "$key" == "$escape" ]
    then
       break
    else 
       key=""
  fi

done

echo "Continue..."