BASH 기능은 사용자 입력을 읽거나 시간 초과로 중단합니다.

BASH 기능은 사용자 입력을 읽거나 시간 초과로 중단합니다.

프로그램 a 또는 b가 완료되면 x를 수행하는 BASH 함수를 작성하려고 합니다.

예:

echomessage()
{
echo "here's your message"
if [[sleep 3 || read -p "$*"]]
then
   clear
fi
}

이 경우:

a = ' sleep 3'는 3초 후에 x를 실행해야 합니다.

b = ' read -p "$*"'는 키보드 입력이 제공될 때마다 x를 실행해야 합니다.

x = ' clear' 프로그램이 절전 모드로 인해 시간 초과되거나 사용자가 키보드의 키를 누르는 경우 에코 출력을 지웁니다.

답변1

read사용할 수 있는 시간 초과 매개변수가 있습니다.

read -t 3 answer

read단일 문자(기본값은 전체 줄 + Enter)를 기다리 려면 입력을 1자로 제한할 수 있습니다.

read -t 3 -n 1 answer

올바르게 입력하면 반환 값은 0이 되므로 다음과 같이 확인할 수 있습니다.

if [ $? == 0 ]; then
    echo "Your answer is: $answer"
else
    echo "Can't wait anymore!"
fi

귀하의 경우에는 백그라운드 작업을 구현할 필요가 없지만 원하는 경우 다음 예를 참조하세요.

#!/bin/bash

function ProcessA() {
    sleep 1  # do some thing
    echo 'A is done'
}

function ProcessB() {
    sleep 2  # do some other thing
    echo 'B is done'
}

echo "Starting background jobs..."

ProcessA &  # spawn process "A"
pid_a=$!    # get its PID

ProcessB &  # spawn process "B"
pid_b=$!    # get its PID too

echo "Waiting... ($pid_a, $pid_b)"
wait  # wait for all children to finish

echo 'All done.'

관련 정보