Стандартный способ захвата вывода команды в оболочке Bourne - использовать синтаксис $()
:
output=$(mycommand)
Для команд, которые имеют много выходных данных, однако, это требует, чтобы оболочка выделяла память для всего этого как одна длинная строка. Я бы предпочел найти что-то, что соответствует моральному эквиваленту функции Unix C popen
, чтобы получить новый дескриптор файла, из которого я мог бы read
из:
newfd=popen(mycommand)
while read -u $newfd LINE; do
#process output
done
Это вообще возможно?