如何使这项工作?我真的想靠自己学习。 但我真的没有得到这个。我想在中运行一个命令 后台并提示用户是否希望它继续运行 或不。如果没有,请终止命令。我知道我错过了什么。我只是 不确定是什么。
这是我的代码:
command > /dev/null 2>&1 &
echo
until [[ $REPLY =~ ^[Yy]$ ]] ;
do
echo
read -p "Would you like to stop the command [Yy/Nn]? " -n 1 -r
# Stop stop the command
killall -9 command
done
答案 0 :(得分:0)
有点不清楚你想要你的循环频率,但假设你只想阻止用户键入Yy
,你可以在后台启动command
,保存它< em>进程ID (例如PID
)使用bash特殊变量$!
。然后只需循环直到获得Yy
(在bash中,您只需使用参数展开 ${var,,}
来评估小写中的var
)。收到Yy
答案后(使用ans
作为存储响应的变量),您可以执行以下操作:
#!/bin/bash
command & >/dev/null 2>&1 # start command in background
cmdpid=$! # save the PID of command
ans=
while :; do # infinite loop until y or Y
printf "\nWould you like to stop the command (y/n)? "
read -n 1 -r ans # read ans
[ "${ans,,}" = 'y' ] && break
done
printf "\nkilling proc: %d\n" "$cmdpid"
kill $cmdpid # kill the PID
示例使用/输出
(上面没有实际开始command
(因为我不知道它是什么))
$ bash rununtil.sh
Would you like to stop the command (y/n)? k
Would you like to stop the command (y/n)? i
Would you like to stop the command (y/n)? l
Would you like to stop the command (y/n)? l
Would you like to stop the command (y/n)? Y
killing proc
仔细看看,如果您有其他问题,请告诉我。