bash - 使用命令替换时在终端中显示命令输出
问题描述
所以我试图检查命令的输出,但我也希望能够直接在终端中显示输出。
#!/bin/bash
while :
do
OUT=$(streamlink -o "$NAME" "$STREAM" best)
echo "$OUT"
if [[ $OUT == *"No playable streams"* ]]; then
echo "Delaying!"
sleep 15s
fi
done
这就是我试图做的。
该代码检查命令的输出是否包含该错误子字符串,如果是,则会添加延迟。它在这部分工作得很好。
但是当命令实际上成功下载文件时它不能很好地工作,因为它不会执行该回显,直到它完成下载(这需要几个小时)。所以在那之前我无法亲自检查命令的输出
再加上这个特定命令的输出会实时显示和更新速度和文件大小,这是 echo 无法复制的。
那么有没有办法能够实时显示命令的输出,同时命令替换它们以便在命令完成后检查子字符串的输出?
解决方案
使用临时文件:
TEMP=$(mktemp) || exit 1
while true
do
streamlink -o "$NAME" "$STREAM" best |& tee "$TEMP"
OUT=$( cat "$TEMP" )
#echo "$OUT" # not longer needed
if [[ $OUT == *"No playable streams"* ]]; then
echo "Delaying!"
sleep 15s
fi
done
# not really needed here because of endless loop
rm -f "$TEMP"
推荐阅读
- excel - vba if elseif else-statement 不给出输出我希望它是
- python - 在 pyomo 为具有不同子索引的变量设置不同的初始值
- graph - 是否可以从 Grafana 的堆积线图中排除一个系列
- docker - 具有多个构建执行器的 kubernetes 动态 jenkins slave
- python-3.x - Discord 机器人在机器人反应检查问题上应用角色
- npm - NPM 包,包括 .DS_Store
- here-api - 无法按类别过滤 here.com 自动建议 API
- python - 使用 Beautiful Soup 或 Selenium (Py) 下载 ASPX PDF 链接
- python - 安装python 3.7.2 usr/bin 后只有python 2.7
- html - 如何垂直居中文本,具有位置:绝对?