bash - Bash 读取时间比指定的快
问题描述
这是 bash 代码
read -t 10 -p "Video path ==>" VIDEO_SOURCE
[ "$VIDEO_SOURCE" = q ]
if [ "$VIDEO_SOURCE" = "$NONE" ]; then
./run.sh
基本上我想要它做的是在 10 秒后运行 ./run.sh 如果我没有给它任何输入,问题是在不到 10 秒的时间内运行 ./run.sh。
编辑:
这是完整的脚本
#! /bin/bash
VBR="1500k"
FPS="24"
QUAL="superfast"
RTMP_URL="rtmp://live.live"
KEY="xxx-xxx-xxx-xxx"
VIDEO_SOURCE="video.mp4"
while :; do
ffmpeg \
-re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
-vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
-f flv "$RTMP_URL/$KEY"
read -t 10 -p "Video path ==>" VIDEO_SOURCE
[ "$VIDEO_SOURCE" = q ]
if [ -z "$VIDEO_SOURCE"]; then
./run.sh
fi
done
我想要它做的是在崩溃后或按下 10 秒后等待 10 秒后q
,如果指定了新输入,如果输入无效或为空(以防我输入速度太慢)输入或在崩溃的情况下)我希望它运行./run.sh
,我运行这个脚本tmux
只是为了让它保持运行,如果我想更新输入,我只需返回tmux
会话并按下q
并给它新的输入。
解决方案
我无法重现您的问题。不过,如果真的有这样一个奇怪的问题,你可以尝试使用以下 hack 来解决它:
read var < <(timeout --foreground 10 head -n1)
这应该有点像read -t 10
但依赖于外部程序timeout
而不是read
内置的超时功能。
推荐阅读
- javascript - Firebase google signin authentication and popup is not working in React project
- kubernetes - 如何在谷歌云上仅使用 yaml 在单独的节点上部署 kubernetes 集群
- javascript - Blurry Image on canvas
- python - 以特定模式结尾的字符串的正则表达式
- matlab - 如何在MATLAB的一个窗口中绘制多个图形
- java - 我该如何解决这个数组问题?汽车存放方案
- html - 在悬停时推动两侧
- python - Problem when trying to play mp3 file with QMediaPlayer PyQt5
- stored-procedures - Stored procedure to return output parameter with description of error encountered
- excel - Excel 无法读取日期和时间数据