프로그램 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.'