Haga un bucle hasta encontrar la entrada y luego use la entrada

Haga un bucle hasta encontrar la entrada y luego use la entrada

Digamos que tengo un archivo que tiene entradas,

Archivo:

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)

Quiero tener un bucle hasta que el usuario presione un número entre 1 y 3 (número de filas en ese archivo)

y cuando el usuario inserta 1, por ejemplo, quiero que el sistema envíe un mensaje a esos puntos específicos (usando el comando escribir usuario pts/1).

¿Es eso posible de alguna manera? No tengo idea de por dónde empezar.

Respuesta1

Creo que estás complicando demasiado las cosas.

A continuación se muestra una forma breve de solicitar un número y luego enviar un mensaje a esa terminal:

#!/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

Ejemplos de ejecución a continuación:

./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

Tras la entrada correcta ( 1arriba), obtengo este resultado en /dev/pts/1:

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

información relacionada