У меня есть скрипт, который выполняет множество различных операций и отображает статус их завершения в понятной форме для пользователя. Мне нужна функция, чтобы некоторые строки можно было извлечь как переменные для дальнейшей обработки.
Это очень упрощенный пример:
#!/bin/bash
echo "Test script."
echo -n "1) cat file "
cat ./testfile.f &> /dev/null
if [ $? -eq 0 ]
then
echo "$(tput hpa $(tput cols))$(tput cub 8)[OK]"
else
echo "$(tput hpa $(tput cols))$(tput cub 8)[FAIL]"
fi
echo -n "2) make subfolder "
mkdir ./testdir &> /dev/null
if [ $? -eq 0 ]
then
echo "$(tput hpa $(tput cols))$(tput cub 8)[OK]"
else
echo "$(tput hpa $(tput cols))$(tput cub 8)[FAIL]"
fi
Это займет некоторое время:
$./test.sh
Test script.
1) cat file [FAIL]
2) make subfolder [OK]
Как я могу получить последнюю строку (в идеале, любую строку) во время выполнения скрипта? В идеале это будет использование функции (чтобы я мог работать с полученной строкой). Эта строка будет обрабатываться в том же сценарии.
Пока что я вижу только одно решение: перенаправить вывод каждой команды echo с помощью tee.
Есть ли способ прочитать уже выведенные данные!?