Продолжайте цикл, пока не найдете запись, а затем используйте ее.

Продолжайте цикл, пока не найдете запись, а затем используйте ее.

Допустим, у меня есть файл, в котором есть записи,

Файл:

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)

Я хочу, чтобы цикл выполнялся до тех пор, пока пользователь не нажмет число от 1 до 3 (количество строк в этом файле)

и когда пользователь вставляет, например, 1, я хочу, чтобы система отправила сообщение этому конкретному pts (используя команду write user pts/1).

Это вообще возможно как-то? Понятия не имею, с чего начать.

решение1

Мне кажется, вы все слишком усложняете.

Вот короткий способ запросить номер, а затем отправить сообщение на этот терминал:

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

Примеры исполнения ниже:

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

При правильном вводе ( 1выше) я получаю следующий вывод /dev/pts/1:

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

Связанный контент