1

Я выполняю сценарий оболочки, в котором присутствует одна команда curl. Я должен сохранить вывод команды curl (в формате xml) в файл и отобразить результат на экране. Для этого "команда tee" используется после curl с использованием конвейера. Мне нужно проверить, успешно ли выполняется команда curl. Я использовал $? но он принимает статус выхода команды tee. Я использовал PIPESTATUS [0] и set -o pipefail, но не работал для curl. Как я могу проверить, успешно ли выполняется команда curl? Как сохранить статус выхода команды curl в переменной? Это просто демонстрационный код.

curl output | tee -a filename

Я хочу знать статус выхода curl

2 ответа2

1

Используйте переменную $ PIPESTATUS, которая является массивом. Следующее даст вам код возврата команды.

curl output | tee -a filename
echo ${PIPESTATUS[0]}
0

Вы можете использовать следующую конструкцию:

content=`curl http://www.google.com`
if [[ $? -ne 0 ]]; then 
  # do some fail stuff
else
  echo '$content' | tee /tmp/output.file
fi

Он хранит выходные данные curl в переменной, затем проверяет состояние выхода и, если он успешен, передает выходные данные в файл (и стандартный вывод).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .