командная подстанция для многострочного вывода команды?

Как я могу выполнить следующую замену команды?

$ time real 0m0.000s user 0m0.000s sys 0m0.000s $ oldtime="$(time)" bash: command substitution: line 23: syntax error near unexpected token `)' bash: command substitution: line 23: `time)"' 

Я думаю, это не работает, потому что вывод команды имеет несколько строк, потому что работает один вывод:

 $ oldtime="$(echo hello)" $ echo $oldtime hello 

Я не уверен, что вы пытаетесь поймать, потому что time не записывается в stdout:

 $ time > tmpfile real 0m0.000s user 0m0.000s sys 0m0.000s 

и вы на самом деле не «время».

 oldtime="$(time echo)" 

не выдает ошибку, но все равно печатает время на stdout.

Вы, вероятно, захотите сделать что-то вроде

 $ oldtime="$( { time ; } 2>&1 )" 

При запуске в подобном подобном случае вы можете использовать times вместо этого. Это в основном одно и то же – за исключением того, что вместо того, чтобы сообщать о времени обработки для конвейера, переданного ему в качестве аргументов, вместо этого он сообщает о временах обработки, используемых его родительской оболочкой (read: командная подоболочка) и всех ее дочерних элементов с момента ее родительская оболочка была вызвана – и она должна записываться в stdout.

Таким образом, вы можете:

 pipeline_out=$(some | arbitrary | pipeline; times) 

… захватить все это.

Или просто посмотреть резюме использования для текущего сеанса оболочки:

 times