Отображение вывода команды в терминале при использовании подстановки команд
Поэтому я пытаюсь проверить вывод команды, но я также хочу иметь возможность отображать вывод непосредственно в терминале.
#!/bin/bash
while :
do
OUT=$(streamlink -o "$NAME" "$STREAM" best)
echo "$OUT"
if [[ $OUT == *"No playable streams"* ]]; then
echo "Delaying!"
sleep 15s
fi
done
Это то, что я пытался сделать.
Код проверяет, содержит ли вывод команды эту подстроку ошибки, если это так, то добавляется ли задержка. Это хорошо работает в этой части.
Но это не работает, когда команда на самом деле успешно загружает файл, поскольку не выполнит это эхо, пока не завершит загрузку (что может занять несколько часов). Так что до тех пор у меня нет возможности лично проверить вывод команды
Кроме того, вывод этой конкретной команды отображает и обновляет скорость и размер файла в режиме реального времени, что-то, что эхо не сможет воспроизвести.
Так есть ли способ отображать выходные данные команды в режиме реального времени, а также заменять их командой, чтобы проверить выходные данные для подстрок после завершения команды?
1 ответ
Используйте временный файл:
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"