Здравствуйте.
Цель: в bash скрипте выполнить внешнюю команду и записать вывод и ошибки в переменную, но без динамических изменений (проценты, скорость).
Вариант через
OUTPUT=`megacmd sync /tmp/site/ mega:/backup/latest/ 2>&1`
megacmd sync /tmp/site/ mega:/backup/latest/ > log.txt 2>&1
OUTPUT=`cat log.txt`
получается с динамическими строчками (смотреть пример вывода ниже КОД-2) как в переменной, так и в файле.
Программа выводит процент загруженного файла и скорость загрузки, это всё в одной строке.
После завершения выполнения программы вывод получается такой:
КОД-1
# megacmd sync /tmp/site/ mega:/backup/latest/
Found 1 file(s) to be copied
Copying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 100.00 % of 5.9MB at 154K/s 39s
Successfully sync /tmp/site/ to mega:/backup/latest/ in 39s
где строка
Copying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 100.00 % of 5.9MB at 154K/s 39s
в течении некоторого времени изменялась (проценты, скорость)
Но дальше появляется проблема: если в консоле вывести содержимое
cat log.txt
Вывод будет идентичен первому примеру (КОД-1)
А если открыть файл в текстовом редакторе или считать в переменную через
OUTPUT=$(cat log.txt)
то переменная OUTPUT будет содержать совершенно другой результат:
КОД-2
Found 1 file(s) to be copied
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 0.00 % of 5.9MB at 0B/s 0s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 0.00 % of 5.9MB at 0B/s 1s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 0.00 % of 5.9MB at 0B/s 2s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 2.24 % of 5.9MB at 46KB/s 2s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 2.24 % of 5.9MB at 46KB/s 3s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 2.24 % of 5.9MB at 46KB/s 4s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 6.71 % of 5.9MB at 68KB/s 5s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 6.71 % of 5.9MB at 68KB/s 6s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 6.71 % of 5.9MB at 68KB/s 7s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 6.71 % of 5.9MB at 68KB/s 8s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 13.43 % of 5.9MB at 85KB/s 9s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 13.43 % of 5.9MB at 85KB/s 10s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 13.43 % of 5.9MB at 85KB/s 11s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 13.43 % of 5.9MB at 85KB/s 12s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 12s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 14s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 15s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 16s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 17s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 18s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 19s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 20s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 22.38 % of 5.9MB at 101K/s 21s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 35.80 % of 5.9MB at 95KB/s 21s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 35.80 % of 5.9MB at 95KB/s 22s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 35.80 % of 5.9MB at 95KB/s 23s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 46.99 % of 5.9MB at 114K/s 24s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 46.99 % of 5.9MB at 114K/s 25s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 46.99 % of 5.9MB at 114K/s 26s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 46.99 % of 5.9MB at 114K/s 27s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 48.53 % of 5.9MB at 104K/s 27s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 64.20 % of 5.9MB at 137K/s 27s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 64.20 % of 5.9MB at 137K/s 28s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 64.20 % of 5.9MB at 137K/s 29s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 64.20 % of 5.9MB at 137K/s 30s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 30s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 31s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 32s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 33s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 34s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 35s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 36s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 82.10 % of 5.9MB at 156K/s 37s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 100.00 % of 5.9MB at 154K/s 37s
[2KCopying /tmp/site/1.tar -> mega:/backup/latest/1.tar # 100.00 % of 5.9MB at 154K/s 39s
Successfully sync /tmp/site/ to mega:/backup/latest/ in 39s
Вопрос: как можно записать в переменную вывод/лог, как если бы я сделал "cat log.txt" в консоле линукс (чтобы получить вывод КОД-1)?
Или возможно ли сразу записать в переменную вывод как в КОД-1?
Спасибо.