У юзера, от имени которого запускается скрипт нет прав на чтение файла filename. Соответственно, в поток ошибок идет мессага об этом. Задача стоит: сохранить поток ошибок всех команд функции в переменную (для последующей проверки того, что блок кода отработал безошибочно). Никак не выходит.
#!/bin/bash
a="a"
block_a() {
cat filename
echo "message2, a='$a'"
}
var=$( block_a > _out.txt 2>&1 )
echo "var = '$var'"
В том варианте, который используется сейчас, как и следовало ожидать, все (и вывод, и ошибки) уходит в файл. Использовать временный файл не хочется.
Как лучше поступить? Можно при помощи какого-нибудь хитрого перенаправления поменять местами потоки ошибок и вывода? Или block_a_std_errors.tmp неизбежен?
P.S. а вот стандартный вывод нужно кинуть именно в файл