Отображение вывода команды в терминале при использовании подстановки команд - PullRequest
0 голосов
/ 30 мая 2019

Поэтому я пытаюсь проверить вывод команды, но я также хочу иметь возможность отображать вывод непосредственно в терминале.

#!/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 Ответ

0 голосов
/ 30 мая 2019

Использовать временный файл:

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"
...