Я хочу выполнить команду (скажем, ls
) и sed
ее вывод, а затем сохранить стандартный вывод в переменной, например,
OUT=$(ls | sed -n -e 's/regexp/replacement/p')
После этого, если я попытаюсь получить доступ массив $PIPESTATUS
, я получаю только 0
(что совпадает с $?
). Итак, как я могу получить как $PIPESTATUS
, так и захватить весь стандартный вывод команды по конвейеру? stdout (например, ls | sed -n -e 's/regexp/replacement/p'
), я получаю ожидаемые статусы выхода в $PIPESTATUS
(например, 0 0
)
Если я выполнил только одну команду (без передачи нескольких команд), используя
Подстановка команд и захватил стандартный вывод (например,
OUT=$(ls)
), я ожидаю
одиночный статус выхода в
$PIPESTATUS
(который совпадает с
$?
)
PS Я знаю, я мог запустить команду 2 раза (сначала для захвата стандартного вывода, затем для доступа к $PIPESTATUS
без использования подстановки команд), но есть ли способ получить и то, и другое за один раз?