Вывод Shell Script не записывается в файл должным образом

Я попытался вывести вывод своей программы в текстовый файл. Он правильно добавляет команды эха к файлу, но команда imagemagick «compare» не добавляется к файлу. Это просто значение STOUD «значение PSNR», которое возвращается методом сравнения в терминал.

Есть ли способ добавить этот вывод команд в текстовый файл? Кроме того, если я вызываю свой скрипт только с помощью ./script.sh> test.txt, он не печатает ничего, кроме эха, для файла и сравнения результатов с терминалом.

Вот часть моего кода:

ls images/toconvert/ > lsout.txt while read LINE do echo ====================== $LINE ==================== >> psnrdiff.txt echo Jpeg2000 >> psnrdiff.txt compare -metric PSNR images/toconvert/$LINE images/converted/$LINE.jp2 images/psnrDiffs/$LINE.jp2.png >> psnrdiff.txt done < lsout.txt 

Различные команды imagemagick выводят в STDERR вместо STDOUT .

Вы можете перенаправить STDERR на STDOUT чтобы захватить вывод:

 compare -metric PSNR .... >> psnrdiff.txt 2>&1 
 ls images/toconvert/ > file.txt while read LINE do echo ====================== $LINE ==================== >> psnrdiff.txt echo Jpeg2000 >> psnrdiff.txt compare -metric PSNR "images/toconvert/$LINE" "images/converted/$LINE.jp2" "images/psnrDiffs/$LINE.jp2.png" >> psnrdiff.txt done < file.txt