Я хочу получить возвращаемое значение команды run в фоновом режиме с помощью pipe, поэтому у меня есть пример кода.Получить возвращаемое значение запуска команды в фоновом режиме с помощью команды pipe и tee
#!/bin/bash
export RETVALUE="0"
CMD='ls ThisFileDoesNotExit'
LOG='tee -a log.txt'
$CMD | $LOG ; RETVALUE=${PIPESTATUS[0]} &
#$CMD | $LOG ; echo ${PIPESTATUS[0]} & // This print ret value 2
wait
echo "Return Value of ls is $RETVALUE"
Выход:
Return Value of ls is 0 // It should print value 2
Если я эхо возвращаемого значения из тех же команды, то распечатать правильное значение возврата.
Но если сохранить его в переменной RETVALUE, то он показывает неправильное значение.
Это? [shell - получить код выхода фонового процесса] (http://stackoverflow.com/a/1570356/1983854). То есть '$!' – fedorqui
вы уже храните его в переменной: RETVALUE. Нет ничего, что помешает вам присвоить значение этой переменной другому 'var = $ RETVALUE' – SaintHax
@SaintHax. При назначении этого способа $ RETVALUE всегда печатает« 0 », а значение возврата ошибки равно 2. См. Обновленный вопрос. –