Schleife, bis der Eintrag gefunden ist, und verwende dann den Eintrag

Schleife, bis der Eintrag gefunden ist, und verwende dann den Eintrag

Nehmen wir an, ich habe eine Datei mit Einträgen,

Datei:

user pts/1        2016-10-22 19:47 (ip)
user1 pts/2        2016-10-22 20:04 (ip)
user1 pts/3        2016-10-22 20:04 (ip)

ich möchte eine Schleife haben, bis der Benutzer eine Zahl zwischen 1-3 drückt (Anzahl der Zeilen in dieser Datei).

und wenn der Benutzer beispielsweise 1 eingibt, möchte ich, dass das System eine Nachricht an diesen bestimmten Punkt sendet (mit dem Befehl „write user pts/1“).

Ist das überhaupt irgendwie möglich? Ich habe keine Ahnung, wo ich anfangen soll.

Antwort1

Ich glaube, Sie machen die Dinge zu kompliziert.

So können Sie schnell eine Nummer anfordern und dann eine Nachricht an das Terminal senden:

#!/bin/bash

function getNumber()
{
    pattern="[1-3]"
    echo "Enter a number between 1 and 3"

    read number

    if [[ ! "$number" =~ $pattern ]]; then
        echo "Wrong number"
        getNumber
    fi  
}

getNumber

echo "Hello pts$number" > /dev/pts/$number

Ausführungsbeispiele unten:

./pts.sh 
Enter a number between 1 and 3
0
Wrong number
Enter a number between 1 and 3
4
Wrong number
Enter a number between 1 and 3
1

Bei korrekter Eingabe ( 1siehe oben) erhalte ich diese Ausgabe in /dev/pts/1:

[maulinglawns@ArchLinux slask]$ tty
/dev/pts/1
[maulinglawns@ArchLinux slask]$ Hello pts1

verwandte Informationen